共计 917 个字符,预计需要花费 3 分钟才能阅读完成。
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 是一个示意 ” 还没有定义 “ 的原始类型。
正文完