以下显示"0"在Javascript 中为false:
>>> "0" == false
true
>>> false == "0"
true
Run Code Online (Sandbox Code Playgroud)
那么为什么以下打印"ha"?
>>> if ("0") console.log("ha")
ha
Run Code Online (Sandbox Code Playgroud) '0' == false; // true
'0' || 1; // '0'
'0' ? true : false; // true
!!'0' // true
Run Code Online (Sandbox Code Playgroud)
是"=="会投'0'- > 0- > false,但其他不?
我想要更多细节.
谁能解释为什么这里a = [] ? 1 : 2a等于1,这里b = [] == true ? 1 : 2b等于2
我想在这里理解一些东西,解释自己的最佳方式是举个例子:
"" == false
// true
"0" == false
// true
false == false
// true
Run Code Online (Sandbox Code Playgroud)
但这里发生了什么?
"" == "0"
// false
Run Code Online (Sandbox Code Playgroud)
如果""评估false并"0"评估false逻辑,则预测它与我写的相同false == false.
我确实意识到我试图在这里比较两个字符串,但语言如何知道"a" == "b"或者之间的区别"" == "0"?在这种情况下如何发生强制?
谈话很便宜,我会展示我的代码.
var a; // a = undefined
if(a == false){ // As I typed == not ===, a needs to be translated to boolean (undefined == false) but it doesn't
return false;
}
else {
return true;
}
// true
Run Code Online (Sandbox Code Playgroud)
这返回true但我确信它会返回false,因为当我使用double equal时,undefined与false相同.
当我尝试使用时,事情变得奇怪
if(!a){..} else {..};
// false
Run Code Online (Sandbox Code Playgroud)
在这里,我得到了我的假,但直到这一刻,我认为(!a)和(a == false)绝对等于.