Undefined类型
- 表示变量不含有值
Undefined
类型只有一个值,即特殊的undefined
声明未初始化的变量会自动被赋予 undefined
值与未定义的变量有点本质的区别
var message; // 声明之后默认为undefined 值
// 下面这个变量并没有声明
// var age
alert(message); // "undefined"
alert(age); // 产生错误
对未初始化的变量执行 typeof
操作符会返回 undefined
值,ES5中对未声明的变量执行 typeof
操作符同样也会返回 undefined
值,但 ES6 里 let
、const
没有变量声明提升同时在声明之前有暂时性死区
所以如果在声明之前对一个变量使用 typeof
会报错。
var message; // 声明之后默认取得了 undefined 值
// 下面这个变量并没有声明
// var age
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"
undefined
一般出现在以下几种情况:
- 在使用
var
声明变量但未对其加以初始化时,这个变量的值就是undefined
- 获取不存在的属性名返回
undefined
- 在严格模式下,没有明确的执行主体,
this
是undefined
- 执行函数形参未传值,默认是
undefined
- 函数没有返回值(
return
或者return
后面什么也不带),默认返回undefined
- 在数组的
find
方法中,没有找到的情况下是undefined
null类型
表示空对象指针,空,没有 Null 类型是第二个只有一个值的数据类型(第一个就是Undefined),这个特殊的值是 null
var car = null;
alert(typeof car); // "object"
如果定义的变量准备在后面保存对象,那么最好将该变量初始化为 null
而不是其他值。
null
一般出现在以下几种情况:
- 手动设置变量的值或者对象某一个属性值为null(此时不赋值,会在后面的代码中进行赋值,相当于初始化。)
- 在JS的 DOM 元素获取中,如果没有获取到指定的元素对象,结果一般是
null
。 - Object.prototype._proto_的值也是null。
- 在正则捕获的时候,如果没有捕获到结果,默认也是
null
。
null
和 undefined
之间的相等操作符(==
)总是返回 true
。