「所以,這x
s就(true == x) === !!x
給false
?」
不限x
其中其布爾轉換是不一樣的它的轉換由Abstract Equality Comparison Algorithm。
一個例子是僅具有空白的字符串:
var x = " ";
其布爾轉換是true
(如與任何非空字符串的情況下),但其==
比較false
因爲只有空格的字符串將被轉換爲數字0
,並且true
值將被轉換爲數字1
,並且這些值不相等。
x == true; // false
!!x; // true
或以示出最終值==
在比較:
Number(true) == Number(x);
// 1 == 0
1 == 0; // false
,並顯示出的!!x
的結果,這將是等效於這樣的:
Boolean(x); // true
所以你的原始表達式可以粗製濫造被視爲如下:
var x = " ";
(Number(true) == Number(x)) === Boolean(x);
// ( 1 == 0) === true
// (false) === true
false === true; // false
我說「粗暴」,因爲這肯定不捕獲上面鏈接的算法的所有細節,並榮獲」 t對於提供給操作數的所有值都是相同的。
要了解==
如何處理它的操作數,你真的需要研究一下這個算法。
鬆散的平等與真實無關。 – SLaks
多數民衆贊成深深!!!!! –
'「a」== true'爲false –