簡體   English   中英

JavaScript true +/- true是否為false?

[英]Javascript true +/- true is false?

我正在嘗試獲取一個表達式來測試一個字段是否為空並且將其視為false

a=true
b=true
-------------
true

 a=null
 b=true
 -------------
 true

但是當我執行時:

var a=true;
var b=true;
alert((a+b) == true);   => false

返回false,我不明白。

var a=null;
var b=true;
alert((a+b) == true);   => true

使用javascript的一般解決方案是使用!! 解析為布爾值。 !! 對真實性進行兩次否定,得到布爾值,其布爾值與原始值相同。

然后,應將&&用作邏輯and運算。

var a=null;
var b=true;
console.log(!!a && !!b);   // false

編輯:關於奇怪的+行為的附錄

您在使用+而不是&&時看到的奇怪之處是,在JavaScript中, +布爾值強制轉換為整數,其中true變為1false變為0

因此

true + true \\ 2
true + false \\ 1

然后當做

true + true == true

等式比較的左側解析為2 ,JavaScript然后將其右側強制為1 ,因此相等性檢查失敗。

做的時候

null + true == true

左邊變成整數1 ,右邊變成整數1

我建議閱讀MDN關於平等比較和相同性的指南,以獲取有關JavaScript的價值強制和抽象平等檢查的更多信息。

 var a = true; var b = true; console.log((a & b) === 1); var c = null; console.log((a & c) === 1); 

true == 1這很重要。 當您將true轉換為數字時,它將為1

然后true + true == true變成2 == 1這是false

同樣, null + true == true變為1 == 1這是正確的,因為null解析為0

我認為您打算以錯誤的方式測試null

嘗試

alert((a & b) === 1); 

為了將null和true測試為true,您可以執行以下操作:

!null === true

這可能會為您解決。

很簡單。 當您嘗試使+運算為true ,就像1,而false則為0。然后,如果您使true+true ,則得到2而2不是1,所以它不是true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM