# undefined与null的区别
# undefined
Undefined
类型只有一个值,即 undefined
undefined:未定义的值。在声明一个变量后,未初始化的变量会自动被赋予undefined
的值,。
这种原始状态会在以下 4 种场景中出现:
- 声明一个变量,但是没有赋值
var foo;
console.log(foo); // undefined
- 访问对象上不存在的属性或者未定义的变量
var obj = {}
console.log(obj.name) // undefined
- 函数定义了形参,但没有传递实参
//函数定义了形参 a
function fn(a) {
console.log(a); // undefined
}
fn(); //未传递实参
- typeof未初始化和未声明的值
var message; // 这个变量声明之后默认取得了 undefined 值
console.log(typeof message) // undefined
console.log(typeof age) // undefined
# null
Null
类型是第二个只有一个值的数据类型,即 null
从逻辑角度来看,null
值表示一个空对象指针,要意在保存对象的变量还没有真正保存对象。而这也正是使用 typeof
操作符检测 null
值时会返回"object"
的原因。
var data = null;
console.log(typeof data); // "object"
1、手动设置变量的值或者对象某一个属性值为null
(在作用域中不再需要使用某个对象时,把null
赋值给那个变量解除引用,以释放内存)
2、在DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null。
var d = document.getElementById("d");
console.log(d); // 当没有id为"d"的标签时返回null
# 区别
用一句话总结两者的区别就是:
undefined
表示一个变量自然的、最原始的状态值。(值不存在)null
则表示一个变量被人为的设置为空对象,而不是原始状态。(值存在但是为空,没有意义)
所以,在实际使用过程中,为了保证变量所代表的语义,不要对一个变量显式的赋值 undefined,当需要释放一个对象时,直接赋值为 null 即可。