![](/img/trans.png)
[英]if (true || true || false) statement is true in javascript?
[英]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
變為1
, false
變為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.