js 中 true == 1 false == 0

在es5中,處理true == 1 和 false == 0 的判斷流程是這樣的:es5

  • 若是比較的二者中有boolean,會把 boolean 先轉換爲對應的 number,即 0 和 1(false是0,1是true)
  • 若是比較的雙方中有一方爲number一方爲string,會把string轉換爲數字
  • 把string直接轉換爲boolean的時候,空字符串‘’轉換爲 false,除此外的一切字符串轉換爲 true

好比比較 true == '1',過程以下:spa

先將true 轉換爲number,ToNumber(true) == '1'字符串

==> 1 == '1' get

再將string 類型轉換爲數字,1 == ToNumber('1')string

==> 1 == 1io

==> trueim

ToNumber 是ES5中的一個abstract operation,以下圖:img

同理,false == '0',類型轉換

==> ToNumber(false) == '0'co

==> 0 == '0'

==> 0 == 0

==> true

不過須要注意一下,== 只是判斷值相等,若是修改成 true === '1' 或者 true === 1 則都爲false,由於===是判斷值和類型都相等

相關文章
相關標籤/搜索