我想知道JavaScript中null和undefined之间的区别。
当前回答
这种差异可以用卫生纸架来解释:
一个非零值就像一个拿着一卷卫生纸的支架,管上还有卫生纸。零值就像一个空马桶纸巾管的支架。空值就像一个连纸巾管都没有的支架。未定义的值类似于缺少持有者本身。
其他回答
除了不同的含义外,还有其他区别:
对象析构函数对这两个值的作用不同:常量{a=“默认”}={a:未定义};//a是“默认值”常量{b=“默认”}={b:null};//b为空JSON.stringify()保持null,但省略未定义const json=json.stringify({undefinedValue:undefined,nullValue:null});console.log(json);//打印{“nullValue”:null}运算符类型console.log(类型未定义);//“未定义”console.log(类型为空);//“object”而不是“null”
undefined表示变量已声明但尚未赋值:
var测试var;console.log(testVar)//显示未定义console.log(testVar类型)//显示未定义
null是赋值。它可以作为无值表示分配给变量:
var testVar=空;console.log(testVar)//显示nullconsole.log(testVar类型)//显示对象
从前面的示例中可以清楚地看到,undefined和null是两种不同的类型:undefineed是类型本身(undefine),而null是对象。
证明:
console.log(null==未定义)//false(类型不同)console.log(null==undefined)//true(但为“相同值”)console.log(null==null)//true(类型和值相同)
and
null = 'value' // Uncaught SyntaxError: invalid assignment left-hand side
undefined = 'value' // 'value'
null是一个特殊值,表示“无值”。null是一个特殊的对象,因为typeof null返回“object”。
另一方面,undefined表示变量尚未声明,或未给定值。
undefined和null之间的含义差异是JavaScript设计的一个意外,大多数时候这并不重要。如果你真的需要关注这些价值观,我建议你将它们视为可以互换的。
来自Elquent Javascript书
您可能认为undefined表示系统级、意外或错误,如缺少值,null表示程序级、正常或预期缺少值。
通过JavaScript:最终指南