阅读 191

null和undefined的区别(简述null和undefined的区别)

在JavaScript中nullundefined是两种基本数据类型, 都可以用来表示"无"这个概念, 但是在语义表达已经实际使用上是有所区别的

描述

大多数计算机语言只有一个用来表示"无"这个概念的值, 例如CC++NULLJavaPHPnullpythonNoneluaRubynil, 但是在JavaScript中有nullundefined两种基本数据类型来表示"无"这个概念. 在很多情况下nullundefined几乎等价, 例如在if语句中, 都会被 自动转为false

let _null = null; let _undefined = undefined; if (!_null && !_undefined) console.log("true && true"); // true & true 复制代码

==运算符中认为nullundefined相等, 当然在===运算符中认为nullundefined是不相等的

console.log(null == undefined); // true console.log(null === undefined); // fasle 复制代码

使用nullundefined来表示"无"是一个历史遗留原因, 最初设计的时候JavaScript只设置了null作为表示"无"的值, 根据C语言的传统, NULL被设计成可以自动转为0, 但是JavaScript的设计者Brendan Eich, 觉得这样还不够, 首先最初设计JavaScript的时候认为null是一个Object, 这也就是typeof(null) === object的原因, 虽然后来有过提议更改null的类型typeof(null) === null, 但是因为会造成大量旧JavaScript脚本出现问题而被否决了, Brendan Eich觉得表示"无"的值最好不是对象, 且如果null自动转为0, 很不容易发现错误, 因此Brendan Eich又设计了一个undefine数据类型 虽然nullundefined具有非常高的相似性, 但是其在语义与实际使用中是需要有所区分的, undefined表示不存在该值的定义, null表示一个值被定义了, 定义为空值, 因此设置一个值为null是合理的, 例如obj.v = null, 但设置一个值为undefined是不合理的, 因为其已经被主动声明定义, 而设置为undefined未定义是不合理的

区别

  • null是一个表示"无"的对象, Number(null) === 0", undefined是一个表示"无"的原始值, Number(undefined) === NaN```

  • null表示一个值被定义了, 但是这个值是空值

    • 作为函数的参数, 表示函数的参数不是对象

    • 作为对象原型链的终点OBject.getPrototypeOf(Object.prototype)

  • undefined表示不存在该值的定义

    • 变量被声明了还没有赋值, 表现为undefined

    • 调用函数时应该提供的参数没有提供, 参数值表现为undefined

    • 对象没有赋值的属性, 该属性的值表现为undefined

    • 函数没有返回值, 默认返回undefined


作者:Tourscholar
链接:https://juejin.cn/post/7045116542068998157

玩站网免费分享SEO网站优化 技术及文章 伪原创工具 https://www.237it.com/ 


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐