JavaScript中undefined与null有何本质差异?

更新于
2026-10-01 17:26:20
1阅读来源:SEO基础
  • 内容介绍
  • 相关推荐

本文共计870个文字,预计阅读时间需要4分钟。

JavaScript中undefined与null有何本质差异?

1. 未定义的变量:在代码中定义了变量但没有初始化,例如 `var a;`。

2.调用函数时参数不足:在调用函数时,传入的参数数量少于函数期望的参数数量,例如 `function(a) { console.log(a); }` 但调用时 `function(1)`。

3.变量作用域问题:在嵌套函数中,内部函数访问了外部函数的未定义变量,例如 `function outer() { var a; function inner() { console.log(a); } inner(); }`。

4.错误的属性访问:尝试访问一个对象不存在的属性,例如 `obj.a`,其中 `obj` 是一个未定义的对象。

5.错误的类型转换:在执行类型转换时,由于类型不匹配导致变量未定义,例如 `if (a==null) { console.log('a is undefined'); }` 但 `a` 是一个非 `null` 的非 `undefined` 值。

1、Undefined

Undefined 类型只有一个值,即特殊的undefined。根据工作中总结,只要有这几种情况下会出现undefined。

JavaScript中undefined与null有何本质差异?

1.定义变量,但是没有初始化时,如var a;

2.调用某个函数时,实参个数小于形参个数时,未实参化的形参在函数调用过程中的值是undefined;

3.调用某个对象还没有添加的属性时,也会返回undefined;

var obj={} console.log(obj.name);//undefined

4.调用某个没有返回值的函数,也会返回undefined;

function Person(name,age){ this.name=name; this.age=age; } var p=Person("李四",23);//此时的p=undefined;

5.对 未初始化的变量 执行 typeof 操作符会返回 undefined 值;

6.对 未声明的变量 执行 typeof 操作符同样也会返回 undefined 值。

var message; // 这个变量声明之后默认取得了 undefined 值 //未初始化的变量 alert(typeof message); // "undefined" //未申明的变量 alert(typeof age); // "undefined"

2、Null 类型

是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看,null值表示一个空对象指针,要意在保存对象的变量还没有真正保存对象。而这也正是使用 typeof 操作符检测 null值时会返回"object"的原因。这几种情况下会出现null的情况

1、手动设置变量的值或者对象某一个属性值为null(在初始化对象时,手动设置对象为null。在作用域中不再需要使用某个对象时,把null赋值给那个变量解除引用,以释放内存)

2、在javascript的DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null。

var d=document.getElementById("d"); console.log(d);//当没有id为"d"的标签时返回null

3、Object.prototype._proto_的值也是null。(每一个对象都有__proto__属性,指向对应的构造函数的prototype属性,但是因为Object是所有类的基类,其没有对应的构造函数,所有Object.prototype._proto_值为空);

console.log("a".__proto__); //指向的是String的prototype属性 //String {"", length: 0, constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}

4、在正则捕获的时候,如果没有捕获到结果,默认也是null。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计870个文字,预计阅读时间需要4分钟。

JavaScript中undefined与null有何本质差异?

1. 未定义的变量:在代码中定义了变量但没有初始化,例如 `var a;`。

2.调用函数时参数不足:在调用函数时,传入的参数数量少于函数期望的参数数量,例如 `function(a) { console.log(a); }` 但调用时 `function(1)`。

3.变量作用域问题:在嵌套函数中,内部函数访问了外部函数的未定义变量,例如 `function outer() { var a; function inner() { console.log(a); } inner(); }`。

4.错误的属性访问:尝试访问一个对象不存在的属性,例如 `obj.a`,其中 `obj` 是一个未定义的对象。

5.错误的类型转换:在执行类型转换时,由于类型不匹配导致变量未定义,例如 `if (a==null) { console.log('a is undefined'); }` 但 `a` 是一个非 `null` 的非 `undefined` 值。

1、Undefined

Undefined 类型只有一个值,即特殊的undefined。根据工作中总结,只要有这几种情况下会出现undefined。

JavaScript中undefined与null有何本质差异?

1.定义变量,但是没有初始化时,如var a;

2.调用某个函数时,实参个数小于形参个数时,未实参化的形参在函数调用过程中的值是undefined;

3.调用某个对象还没有添加的属性时,也会返回undefined;

var obj={} console.log(obj.name);//undefined

4.调用某个没有返回值的函数,也会返回undefined;

function Person(name,age){ this.name=name; this.age=age; } var p=Person("李四",23);//此时的p=undefined;

5.对 未初始化的变量 执行 typeof 操作符会返回 undefined 值;

6.对 未声明的变量 执行 typeof 操作符同样也会返回 undefined 值。

var message; // 这个变量声明之后默认取得了 undefined 值 //未初始化的变量 alert(typeof message); // "undefined" //未申明的变量 alert(typeof age); // "undefined"

2、Null 类型

是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看,null值表示一个空对象指针,要意在保存对象的变量还没有真正保存对象。而这也正是使用 typeof 操作符检测 null值时会返回"object"的原因。这几种情况下会出现null的情况

1、手动设置变量的值或者对象某一个属性值为null(在初始化对象时,手动设置对象为null。在作用域中不再需要使用某个对象时,把null赋值给那个变量解除引用,以释放内存)

2、在javascript的DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null。

var d=document.getElementById("d"); console.log(d);//当没有id为"d"的标签时返回null

3、Object.prototype._proto_的值也是null。(每一个对象都有__proto__属性,指向对应的构造函数的prototype属性,但是因为Object是所有类的基类,其没有对应的构造函数,所有Object.prototype._proto_值为空);

console.log("a".__proto__); //指向的是String的prototype属性 //String {"", length: 0, constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}

4、在正则捕获的时候,如果没有捕获到结果,默认也是null。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。