簡體   English   中英

Javascript - 為什么這個 if 語句會在控制台中打印兩次“Hello”?

[英]Javascript - Why does this if statement print "Hello" twice in the console?

對於此示例代碼,它會在控制台中打印兩次“Hello”:

 var x = 10; if ( (null) || (console.log("Hello")) || x > 5 ) { console.log("Hello"); }

我假設當“if”語句被讀取時,它讀取console.log,然后打印它,因為x> 5,返回語句為真,然后控制台第二個“Hello”。

有人能告訴我這是否正確嗎? 謝謝!

你的功能:

  1. 設置變量及其值var x = 10

  2. 檢查條件,直到其中之一“是” true (返回true

  3. (null)返回自身,因此函數會檢查其他條件
  4. (console.log("Hello"))返回任何內容( null ),因此該函數會檢查其他條件

  5. x > 5返回true ,因此if{ < code > }的代碼執行發生

  6. (console.log("Hello")) if{ }執行。

正如你所看到的, (console.log("Hello"))執行兩種,而檢查內部情況if聲明,而執行的是“內側” if 這就是為什么您會看到“Hello”記錄了 2 次。

console.log 的返回類型為 undefined。

您會看到兩次 console.log 輸出,因為您已經調用了兩次:

一次在您的 if 條件中,然后在您的 if 語句中。

您的 if 語句將運行,因為您使用的是 OR,並且 x = 10 > 5

if語句首先遇到null ,它是假的,然后執行console.log() ,它返回undefined所以也是假的,最后x > 5 ,這是真的。 因此if語句為真,它進入主體並進行另一次打印。

我假設當“if”語句被讀取時,它讀取console.log,然后打印它,因為x> 5,返回語句為真,然后控制台第二個“Hello”。

更准確地說,是執行“if”語句。 具體而言,評估條件。 由於null是“falsey”,所以||的右邊運算符進行評估。 它執行第一個console.log() 這反過來返回undefined這也是“falsey”和下一個||的下一個操作數被評估。 x>5評估為true ,因此執行第二個console.log()

請注意,這不是編寫代碼的好方法。 console.log()不應該在像這樣的if條件中使用。 它的返回值毫無意義,因為它總是返回undefined

你寫的第一個 console.log 是在 if 語句中,當 if 語句被評估時,該函數將被調用。 如果滿足 if 語句中的條件,將調用第二個語句。 console.log 本身返回 undefined 並且在你的 if 語句中沒有真正的目的。 我建議將其刪除,因為我認為它無法實現您的預​​期 祝您好運 :)

暫無
暫無

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

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