簡體   English   中英

javascript函數和邏輯運算

[英]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.

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