Undefined 类型
只有一个值undefined未定义。
通过 var、let、const 声明的变量,但没有初始化赋值时,变量为 undefined 。
var a = undefined; 和 var a; 等同
通过赋值为 undefined 的变量和未定义的变量还是有区别的:
- 未定义的变量使用会报错
ReferenceError: xxx is not defined - undefined 的变量,会输出'undefined'
typeof undefined // 'undefined'
总结:声明未赋值的变量是 undefined ,不声明直接使用会报错
Null 类型
只有一个值null空值,变量有值,值为空对象指针。
typeof null // 'object'
Undefined 和 Null 的关系
undefined 是由 null 派生出来的,所有他俩是表面兄弟,看着相等 实际上不等
undefined == null // true
undefined === null // false
在变量计算中 null 会转换为 0 , 而 undefined 则转换为 NaN
1 + null; // 1;
1 + undefined; // NaN
用法
-
null 表示空值,及声明变量后,但是未给变量赋值。
-
undefined 表示未定义,及不存在在变量
var i;
console.log(i); // null
var obj = {};
console.log(obj.p); // undefined
function f(x) {
return x;
}
f(); // undefined