你好同胞JS癮君子。有人可以向我解釋評估變量真實性的下列方法之間的區別嗎?JavaScript-用於評估真/假值的方法的差異
var q1Var1 = "hello",
q1Var2 = 0,
q1Var3 = true,
q1Var4 = "false",
q1Var5 = -1,
q1Var6 = undefined,
q1Var7 = null,
q1Var8;
// What is the difference between this block of code:
console.log(!q1Var1);
console.log(!q1Var2);
console.log(!q1Var3);
console.log(!q1Var4);
console.log(!q1Var5);
console.log(!q1Var6);
console.log(!q1Var7);
console.log(!q1Var8);
// and this block?
if(q1Var1 === true){ console.log("true") } else { console.log("false") };
if(q1Var2 === true){ console.log("true") } else { console.log("false") };
if(q1Var3 === true){ console.log("true") } else { console.log("false") };
if(q1Var4 === true){ console.log("true") } else { console.log("false") };
if(q1Var5 === true){ console.log("true") } else { console.log("false") };
if(q1Var6 === true){ console.log("true") } else { console.log("false") };
if(q1Var7 === true){ console.log("true") } else { console.log("false") };
if(q1Var8 === true){ console.log("true") } else { console.log("false") };
我期待發現第二塊也只是的第一個(換句話說,值也只是切換),然而,它看起來像只變量集到非字符串「真」的逆實際上返回true。爲什麼是這樣?兩者有什麼評價之間的根本區別:
!q1Var1
vs.
true === q1Var1
請參閱http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use - 做'!q1Var1'與測試' q1Var1 == false'然後只看==和=== – dievardump
之間的區別請參閱http://stackoverflow.com/questions/5515310/is-there-a-standard-function-to-check-for-null-undefined -or-blank-variables-in/5515349#5515349 – jAndy
dievardump - 感謝這是更多沿着我正在尋找的林...測試現在。 – gogogadgetinternet