[js] 第91天 请描述下null和undefined的区别是什么?这两者分别运用在什么场景?
haizhilin2013 opened this issue · 8 comments
haizhilin2013 commented
第91天 请描述下null和undefined的区别是什么?这两者分别运用在什么场景?
dondonZh commented
null 变量不存在
underfined 变量未赋值
Deleted user commented
null 是“空值”,表示某个对象/资源并不存在;undefined 是指一个属性或变量还未赋值。
当一个变量本该存储一个对象,或一个函数应该返回一个对象,但这个对象却并不存在时,使用 null 来表示这种情况;
当一个属性或变量没有赋值,又或是一个函数没有返回值(如 C++ 里的 void),则它是 undefined;但通常我们不会将一个变量主动地赋为 undefined。
xxf1996 commented
null
为一个字面量,而undefined
则为一个全局变量(全局对象的属性);null
指的是一个变量未指向任何对象,而undefined
通常代表一个变量处于值未定义(未赋值)的状态;
参考文档:null - JavaScript | MDN
nowherebutup commented
- 概念方面:
- undefined:一般是简单数据类型,表示此处应该有个值,但是当前尚未赋值,
- null:一般是复杂数据类型,表示不存在
- 用途方面:
- undefined: 返回执行之后无返回值/ 获取对象不存在的属性值
- null: 原型链的最顶部的不存在对象
forever-z-133 commented
唔,那我来写点别的东西:
- es6 的结构与函数默认值,只有
undefined
可设默认值,null
不能 +null
为0
,+undefined
为NaN
JSON.stringify(undefined)
为undefined
,JSON.stringify(null)
为'null'
JSON.stringify({a:undefined})
为'{}'
,JSON.stringify({a:null})
为'{"a":null}'
typeof null
为'object'
,typeof undefined
为'undefined'
Konata9 commented
undefined
的值是派生自 null
的,因此根据 ECMA-262 的规定 null == undefined // true
。两者作为判断条件时都会返回 false
,具体的区别是在含义上。
当一个变量未声明就被使用时,返回的是 undefined
,可以理解为这个变量在内存中都不存在。
而一个变量声明了,只是暂时不需要赋值时应该赋 null
代表这个变量目前没有对应的值。在实际应用中也会把 null
作为一个初始值。
因此从语义上来讲,不应该给变量赋 undefined
。
d4c-27 commented
Undefined 变量声明未赋值
Null 变量声明并赋值为null:初始赋值时,表明要赋值为对象,删除时,让对象成为垃圾对象
xiaoqiangz commented
undefind是声明了该变量 未定义值
null表示的是空值,表示对象不存在,也没有指向任何对象。