Aar*_*cis 5 javascript comparison
我不明白为什么一个场景评估错误而另一个场景评估为真.
场景1:
> '' == ''
true
Run Code Online (Sandbox Code Playgroud)
场景2:
> '' == ('' || undefined)
false
Run Code Online (Sandbox Code Playgroud)
方案2是否询问(空字符串)是否等于:(空字符串)或未定义?
我确信我在这里缺少一些基本的东西,这正是我想要弄清楚的.我可以很容易地编写这个代码,但我想了解它为什么会发生......下次,你知道吗?
Sam*_*son 10
'' == ( '' || undefined )
Run Code Online (Sandbox Code Playgroud)
是不一样的
( '' == '' ) || ( '' == undefined )
Run Code Online (Sandbox Code Playgroud)
它更像是:
var foo = '' || undefined; // Results in undefined
Run Code Online (Sandbox Code Playgroud)
然后比较foo一个空字符串:
foo == ''; // undefined == '' will result in false
Run Code Online (Sandbox Code Playgroud)
逻辑||是短路运营商.如果左边的参数是真实的,那么右边的参数甚至不会被评估.在JavaScript中,''不被认为是真实的:
if ( '' ) console.log( 'Empty Strings are True?' );
Run Code Online (Sandbox Code Playgroud)
因此undefined返回并与空字符串进行比较.当你在括号内执行这个逻辑时,''并且undefined不知道正在等待发生的即将发生的等式检查 - 他们只是想知道它们将在这个评估中存活下来.