簡體   English   中英

為什么| 和 || 類似於 Javascript 中的分號?

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

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