簡體   English   中英

Javascript簡化的if語句

[英]Javascript simplified if-statement

我正在努力理解這個非常簡化的if語句。 當尋找答案時,我發現的只是與三元運算符有關的答案。

無論如何。 為什么下面的第一種情況有效,而后者拋出ReferenceError呢? 只是想了解事物是如何工作的。

 true && alert("test") 

 var x; true && x = 10; 

這與運算符優先級有關 由於&&操作是在=之前計算的,因此第二個示例將毫無意義: (true && x) = 10;

為了使第二種情況起作用,請通過以下方式添加括號:

 var x; true && (x = 10); 

&&賦值運算符相比,Java似乎給&&賦予了更高的優先級。 您給出的第二行解析為:

(true && x) = 10;

如果在作業周圍加上括號,我認為您會看到預期的行為:

true && (x = 10);  // Sets x to 10 and the whole expression evaluates to 10.

萬一您需要一個關於為什么&&可以用作if語句的指針,短語“短路評估”可能會有所幫助。

這是運算符的優先級

如您所見, &&優先級高於=

所以true && x = 10; 實際上是(true && x) = 10; 這顯然是錯誤的。 您只能將值分配給變量,並且(true && x)falsex的值。

alert()的結果是不確定的。 因此,第一個示例可以重新輸入為:

 var x; // x is now 'undefined' true && x; // true and undefined is undefined 

第二個示例是關於運營商優先級的。 運行時將表達式評估為(true && x)= 10;

 var x; true && (x = 10); // result will be 10 

暫無
暫無

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

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