js中null和undefined的区别?这也是一个常见的js面试题
相同点
1,都是基本类型。
2,做判断值都是false。
!!null === false // true
!!undefined === false // true
不同点
1,诞生时间null在前,undefined在后。因为js作者Brendan-Eich在创造js语言时,直接抄了java很多东西。也包括null,后期发现js中的null有缺陷,又创造了undefined。(《JavaScript高级程序设计》中有说,下面的不同点就包含null缺点)
2,typeof 类型不同
typeof null; // 'object'
typeof undefined; // 'undefined'
3,Number() 转数字也不同
Number(null); // 0
Number(undefined); // NaN (Not a Number,非数)是计算机科学中数值数据类型的一类值,表示未定义或不可表示的值。
4,前端开发中出现的时机不同
(1) null 触发null的时机
// 举例
// 获取不存在的dom
document.getElementById("233") // null
// 获取不存在的储存
localStorage.getItem("233") // null
sessionStorage.getItem('233') // null
...
(2) 触发undefined的时机
// 举例(undefined触发时机太多,简单举例)
// 声明变量未使用
var test1; // undefined
// 声明变量未使用
var test1; // undefined
// 对象中找不到该属性
var obj ={};
obj.a; // undefined
...
5,函数参数有默认值时,当参数使用时默认参数 是否生效 效果不同。
function demo(data = '233'){
console.log('_______'+data);
};
demo(null); // _______null
demo(undefined); // _______233
总结
null本质是一个表示"无值"的对象,算是一个特殊值。
undefined是一个表示"还没有定义"的原始类型。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。