第91天 请描述下null和undefined的区别是什么?这两者分别运用在什么场景?
null 变量不存在
underfined 变量未赋值
null 是“空值”,表示某个对象/资源并不存在;undefined 是指一个属性或变量还未赋值。
当一个变量本该存储一个对象,或一个函数应该返回一个对象,但这个对象却并不存在时,使用 null 来表示这种情况;
当一个属性或变量没有赋值,又或是一个函数没有返回值(如 C++ 里的 void),则它是 undefined;但通常我们不会将一个变量主动地赋为 undefined。
null为一个字面量,而undefined则为一个全局变量(全局对象的属性);null指的是一个变量未指向任何对象,而undefined通常代表一个变量处于值未定义(未赋值)的状态;唔,那我来写点别的东西:
undefined 可设默认值,null 不能+null 为 0,+undefined 为 NaNJSON.stringify(undefined) 为 undefined,JSON.stringify(null) 为 'null'JSON.stringify({a:undefined}) 为 '{}',JSON.stringify({a:null}) 为 '{"a":null}'typeof null 为 'object',typeof undefined 为 'undefined'undefined 的值是派生自 null 的,因此根据 ECMA-262 的规定 null == undefined // true。两者作为判断条件时都会返回 false,具体的区别是在含义上。
当一个变量未声明就被使用时,返回的是 undefined,可以理解为这个变量在内存中都不存在。
而一个变量声明了,只是暂时不需要赋值时应该赋 null 代表这个变量目前没有对应的值。在实际应用中也会把 null 作为一个初始值。
因此从语义上来讲,不应该给变量赋 undefined。
Most helpful comment
null 是“空值”,表示某个对象/资源并不存在;undefined 是指一个属性或变量还未赋值。
当一个变量本该存储一个对象,或一个函数应该返回一个对象,但这个对象却并不存在时,使用 null 来表示这种情况;
当一个属性或变量没有赋值,又或是一个函数没有返回值(如 C++ 里的 void),则它是 undefined;但通常我们不会将一个变量主动地赋为 undefined。