什么时候是;“未定义”;等于;空";用JavaScript?

什么时候是;“未定义”;等于;空";用JavaScript?,javascript,Javascript,我一直在看Tut+关于Js的一些视频。他们说有时候“未定义”等于“null”。那么,这是什么时候发生的 undefined == null // => true undefined === null // => false 相等性测试、同一性测试(或严格相等)。如果有疑问,.再补充一句,这个问题不知何故已经得到了回答 您只需检查变量是否具有真实值。这意味着 if( value ) { } 如果值不是: null undefined NaN empty string

我一直在看Tut+关于Js的一些视频。他们说有时候“未定义”等于“null”。那么,这是什么时候发生的

undefined == null
// => true

undefined === null
// => false

相等性测试、同一性测试(或严格相等)。如果有疑问,.

再补充一句,这个问题不知何故已经得到了回答

您只需检查变量是否具有真实值。这意味着

 if( value ) {

 }
如果值不是:

null

undefined

NaN

empty string ("")

0

false

这是因为JS中的键入很差

null === undefined // false 
null == undefined  // true
太好了

好的做法是在js中根本不使用null。您无法摆脱未定义的,因为它是内置的。如果访问未定义的变量,则其
==
未定义,但不等于null,对吗?所以,为了不感到困惑,停止使用它。将其定义为未定义,但不能为null;)


所以不要使用空值

这是一个相当广泛的问题。您是否有需要帮助的特定问题?这是对
=
===
的一个非常误导性的总结。它们都测试相等性(或对象的标识),但前者在测试不同类型的相等性时使用了复杂的类型强制算法。@squint:事实上,就像一般的摘要一样。这就是我链接到文档的原因,文档更具体、更详尽。嗯?摘要根本不需要有误导性。你的描述根本没有反映这些操作员工作的真实情况。这只是一个不好的信息。@squint:这就是它们在MDN中的名称。如果您对此有疑问,请咨询Mozilla的文档团队。(ECMA表示和,没有太大区别)。ECMA指抽象等式比较算法或严格等式比较算法。这和你写的很不一样。MDN没有“Mozilla文档团队”。这是一个维基,打字不差。在使用
=
时,将
null
未定义的
强制为相等值非常有用。告诉人们不要使用
null
是一个糟糕的建议。这是语言的一部分,很有用。@斜视这不是我的话,你知道道格拉斯·克罗克福德是谁,他就是说这句话的人。实际上,他也参与了ES的设计过程。道格·克罗克福德的观点对我来说意义不大。他在初学者中很有影响力,因为他说话很权威,但他的建议往往非常糟糕。null在整个DOM中用于表示未设置的属性值,而不是虚构的属性值,但Doug关于不需要手动将任何内容设置为null的说法可能基本正确。由于它也出现在JSON中,因此if(x!=null)可以作为一个方便的快捷方式,用于您可能关心的两种类型的显式检查。@webdeb未定义的
null
之间有很大的区别<代码>未定义
是指您正在访问不存在的内容。但是
null
是指当您访问
null
的内容时。一个是隐式的,而另一个是显式的。您不应该显式地将
undefined
设置为任何值,而应该始终将其设置为
null