null
null是一个表示"无"的对象
null 的字面意思是:空值 。这个值的语义是,希望表示 一个对象被人为的重置为空对象,而非一个变量最原始的状态 。 在内存里的表示就是,栈中的变量没有指向堆中的内存对象
用法:
- 用来初始化一个变量,这个变量可能被赋值为一个对象。
- 当一个对象被赋值了null 以后,原来的对象在内存中就处于游离状态,GC 会择机回收该对象并释放内存。因此,如果需要释放某个对象,就将变量设置为 null,即表示该对象已经被清空,目前无效状态。
- 作为对象原型链的终点。
类型转换
typeof null : object
布尔值 false
数字0
字符串‘null’
undefind
undefined表示“缺少值”,即此处应该有一个值,但是还没有定义
用法
- 变量被声明了,但没有赋值时,就等于undefined。
- 调用函数时,应该提供的参数没有提供(函数定义了形参,但没有传递实参
),该参数等于undefined。 - 访问对象或数组上不存在的属性,会返回undefined。
- 函数没有返回值时,默认返回undefined。
类型转换
typeof undefined : undefined
布尔值 false
数字NaN
字符串'undefined'
如何检测它们?
==运算符将两者看作相等。如果要区分两者,要使用===或typeof运算符。
console.log(null == undefined) //true
console.log(null === undefined) //false
检测undefined
var exp = undefined;
if (typeof (exp) == 'undefined') {
alert("undefined");
}
检测null
var exp = null;
if (!exp && typeof (exp) != "undefined" && exp != 0) {
alert("is null");
}
网友评论