[英]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”。
有人能告訴我這是否正確嗎? 謝謝!
你的功能:
設置變量及其值var x = 10
檢查條件,直到其中之一“是” true
(返回true
)
(null)
返回自身,因此函數會檢查其他條件 (console.log("Hello"))
返回任何內容( null
),因此該函數會檢查其他條件
x > 5
返回true
,因此if{ < code > }
的代碼執行發生
(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.