Javascript 运算符===和||

Javascript 运算符===和||,javascript,operators,Javascript,Operators,我想知道,这些是否完全相同: var a = something1.something2 === undefined ? 1 : something1.something2; var b = something1.something2 || 1; 否。在第一个中,something1.something2必须是未定义的,才能获得值1。在第二种情况下,它只能是虚假的。有很多:0,“,NaN,null,undefined,当然还有false,No。在第一种方法中,某些东西1。某些东西2必须是未定义

我想知道,这些是否完全相同:

var a = something1.something2 === undefined ? 1 : something1.something2;
var b = something1.something2 || 1;

否。在第一个中,
something1.something2
必须是
未定义的
,才能获得值
1
。在第二种情况下,它只能是虚假的。有很多:
0
NaN
null
undefined
,当然还有
false
,No。在第一种方法中,
某些东西1。某些东西2
必须是
未定义的
,才能获得值
1
。在第二种情况下,它只能是虚假的。有很多:
0
NaN
null
未定义
,当然,
false
,不是

如果将值
0
用于
something1.something2
,则在第一种情况下,返回值为
0

第二种情况返回
1
,因为
0

的falsy值不是

如果将值
0
用于
something1.something2
,则在第一种情况下,返回值为
0


第二种情况返回
1
,因为
0

undefined
重新定义为
undefined
以外的东西的人,并用冷血打他们的头和肩膀,把意大利面弄湿,直到它们恢复知觉。@T.J.Crowder,哦,天哪,你真是个野兽。一只非常善良的野兽。@deceze不在HTML5上下文中。。。“undefined”是只读的。@deceze:不,更有效的方法是找到那些将
undefined
重新定义为
undefined
以外的东西的人,然后用冰冷潮湿的意大利面打他们的头和肩膀,直到他们清醒过来。@T.J.Crowder,天哪,你真是个野兽。一只非常善良的野兽。@deceze不在HTML5上下文中。。。undefined在那里是只读的。