第91天 请描述下null和undefined的区别是什么?这两者分别运用在什么场景?
Activity
dondonZh commentedon Jul 15, 2019
null 变量不存在
underfined 变量未赋值
ghost commentedon Jul 15, 2019
null 是“空值”,表示某个对象/资源并不存在;undefined 是指一个属性或变量还未赋值。
当一个变量本该存储一个对象,或一个函数应该返回一个对象,但这个对象却并不存在时,使用 null 来表示这种情况;
当一个属性或变量没有赋值,又或是一个函数没有返回值(如 C++ 里的 void),则它是 undefined;但通常我们不会将一个变量主动地赋为 undefined。
xxf1996 commentedon Jul 16, 2019
null
为一个字面量,而undefined
则为一个全局变量(全局对象的属性);null
指的是一个变量未指向任何对象,而undefined
通常代表一个变量处于值未定义(未赋值)的状态;参考文档:null - JavaScript | MDN
nowherebutup commentedon Jul 16, 2019
forever-z-133 commentedon Aug 1, 2019
唔,那我来写点别的东西:
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 commentedon Aug 22, 2019
undefined
的值是派生自null
的,因此根据 ECMA-262 的规定null == undefined // true
。两者作为判断条件时都会返回false
,具体的区别是在含义上。当一个变量未声明就被使用时,返回的是
undefined
,可以理解为这个变量在内存中都不存在。而一个变量声明了,只是暂时不需要赋值时应该赋
null
代表这个变量目前没有对应的值。在实际应用中也会把null
作为一个初始值。因此从语义上来讲,不应该给变量赋
undefined
。d4c-27 commentedon Apr 5, 2022
Undefined 变量声明未赋值
Null 变量声明并赋值为null:初始赋值时,表明要赋值为对象,删除时,让对象成为垃圾对象
xiaoqiangz commentedon Jun 23, 2022
undefind是声明了该变量 未定义值
null表示的是空值,表示对象不存在,也没有指向任何对象。