![](/img/trans.png)
[英]Why does the iterator in a JavaScript for loop not need a semicolon?
[英]Why | and || are similar to a semicolon in Javascript?
我在 Chrome 上的控制台上測試了一些東西,然后我運行了這段代碼:
alert() | window.confirm(); alert() || window.confirm();
我的問題是在一行中同時運行 alert 和 confirm 方法而不使用分號。 事實證明,兩者 | 和 || 有效,我無法想象它為什么有效,首先是因為|| 表示一個 OR 運算符,它應該運行其中一個,而不是兩者,其次| 我不知道它是什么。 有人可以解釋發生了什么,還有什么應該起作用而不是; ?
alert()
返回undefined
,這是 false-y。 因此,對於您的||
示例, window.confirm()
仍將運行 .
至於單管字符|
,這是一個按位或,你可以在這里閱讀: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise
分號表示語句的結束。
如果您還不知道,表達式就是計算結果為值的東西。 例如, 5
、 'foobar'
和myFn()
都是表達式,因為它們的計算結果為值。
語句可以由多個表達式組成。 例如, const result = fn('foo')
將'foo'
表達式傳遞給函數調用,函數調用返回一個分配給result
的值。
在您的代碼中,兩行都由兩個表達式組成,但每一行恰好是一個語句。 有了這條線:
alert() || window.confirm()
將首先評估alert
。 由於alert
返回undefined
, ||
運算符然后計算右側的表達式,即window.confirm()
。
您可以使用像|
這樣的運算符將多個表達式放在一起。 , ||
, 或=
。 您還可以通過將每個表達式作為單獨的語句來評估多個表達式,例如
alert();
window.confirm();
兩者都會導致出現一個警告框和一個確認對話框。
||
是一個運算符,如+
或/
; 它計算一些東西。 在||
的情況下 ,它計算一個或另一個值是否為真。
通常,您會在類似if
語句的情況下使用它: if (i===0 || j===0) {...}
但不限於此; 例如,您可以將結果放在一個變量中,然后稍后在if
語句中使用它: have_zero = i===0 || j===0; ...; if (have_zero) {...}
have_zero = i===0 || j===0; ...; if (have_zero) {...}
||
(and &&
) 運算符確實有一件特別的事情:如果左側確定了答案,則它們不會費心計算右側(稱為“短路評估”)。
在這里,您正在計算alert() || window.confirm()
alert() || window.confirm()
,所以它調用alert()
; 正如其他人所指出的,這將返回undefined
這並不能確定||
的答案 ,所以 Javascript 然后調用window.confirm()
。 然后答案被丟棄,因為您沒有將它放在變量中或以其他方式使用它,但這沒關系 - 您想調用方法,您對答案不感興趣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.