![](/img/trans.png)
[英]Javascript logical operation (a === true || a === false)
[英]javascript function and Logical operation
為什么這行:
true && function() {console.log("aaa");}()
打印
未定義
但是這一行:
true || function() {console.log("aaa")}()
打印
真正
我很好奇這是怎么回事? 為什么執行函數?
輸入true && false
,結果將為false
。 這意味着它將同時檢查條件和打印第二個條件。
輸入true || false
true || false
,結果將為true
。 這意味着只要第一個條件評估為真,就不會檢查第二個條件並打印第一個條件。
這解釋了打印出來的內容。
您的第一種情況:
當您輸入true && function() {console.log("aaa");}()
它也在評估第二個條件,並且由於您的第二個條件是可調用函數[ 您最終使用()
],結果即“ aaa”被打印。
最后不要使用()
,即輸入true && function() {console.log("aaa");}
,結果將是您的第二個條件function () {console.log("aaa");}
您的第二種情況:
輸入true || function() {console.log("aaa")}()
true || function() {console.log("aaa")}()
您的第一個條件本身變為true,因此不評估第二個條件,因此僅打印true。
第一個正在評估這兩個條件,因為第二個參數(匿名函數)是...並且其未定義狀態是匿名的。 ||
運算符只是在這里的第一個參數( true
)上得出true
因此它只輸出true
這是因為&&
運算符是邏輯合符( and
)。 這兩個操作數都必須為true
才能使該語句為true
。
同時||
是邏輯分離( or
)。 即使只有一個操作數為true
,也將為true
。
當邏輯分離( or
)發現第一個操作數為true時,無需進一步查找,它可以返回true。
&&邏輯運算會檢查兩個表達式的計算結果是否為true,而|| 操作員只需要一個就可以了。 因此,在第一種情況下,由於第一個表達式的計算結果為true,因此它將檢查其他表達式(函數),這就是函數運行的原因。 在第二種情況下,第一個表達式的計算結果為true,這就是它所需的全部內容,因此它在那里停止。
在JavaScript &&
和||
操作使用短路 。 一旦完全確定結果,它將立即停止評估,並且不評估其余部分。
例如,將您的第一個樣本更改為:
false && function() {console.log("aaa");}()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.