今天爱分享给大家带来JS中null 和 undefined 有啥区别【面试题详解】,希望能够帮助到大家。
null:是 Null类型,表示一个 空对象指针 或 尚未存在的对象
即该处不应该有值,使用typeof运算得到 object ,是个特殊对象值,转为数值为 0。
也可以理解是表示程序级的、正常的或在意料之中的值的空缺
作为函数的参数,表示该函数的参数不是对象
作为对象原型链的终点
注意:null 不是一个对象,但 typeof null === object 原因是不同的对象在底层都会表示为二进制,在 JS 中如果二进制的前三位都为 0,就会被判断为object类型,null 的二进制全为 0,自然前三位也是 0,所以 typeof null === ‘objcet’
undefined:是Undefined 类型,表示一个 无 的原始值 或 缺少值,
即此处应该有一个值,但还没有定义,使用 typeof undefined === ‘undefined’,转为数值为 NaN。
它是在 ECMAScript 第三版引入的预定义全局变量,为了区分空指针对象 和 未初始化的变量。
也可以理解是表示系统级的、出乎意料的或类似错误的值的空缺
1.变量被声但没有赋值时
2.调用函数时,应该提供的参数没有提供时
3.对象没有赋值的属性时,属性值为 undefined
4.函数没有返回值时,默认返回值为 undefined