2012-11-04 102 views
-2

不知所云是什麼意思?東西在javascript

1.

a==b&&b={} 

2.

a==b||b={} 

我沒有找到答案

+2

查找「JavaScript的運營商」的一個開始。有很多重複。這裏有一些「魔術」,因爲'&&'和'||'的*短路性質。 – 2012-11-04 00:02:18

+4

兩者都產生'ReferenceError:無效的左側在賦值' –

+0

http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php – inhan

回答

1

a==b是要測試的條件。運營商&&||測試條件非常像一個三元運算符,但你使用它時,有你需要測試只有一個條件,無論是假||或真&&。這將是一樣的:

if (a == b) { b = {} } // a == b && (b = {}) 
if (a != b) { b = {} } // a == b || (b = {}) 

但作爲Esailija在評論中指出的,好像你錯過了一些括號:

a == b || (b = {}) 
+0

爲什麼我需要添加括號? 我的問題有什麼不好? – user1758424

+0

是因爲[算符優先]的所需的括號(http://www.scriptingmaster.com/javascript/operator-precedence.asp)。括號首先被評估,因爲它們的優先級最高。賦值運算符'='的優先級低於運算符'||'。 – elclanrs

1

這意味着,如果一個等於B,然後設置b鍵一個空的對象。第二個意思是差不多相同。不同的是,如果a和b不相等,第一個不會將b設置爲空對象。但是無論如何,第二個人總會這樣做。這是因爲JavaScript中的OR運算符會繼續,因爲AND運算符會短路。

http://www.openjs.com/articles/syntax/short_circuit_operators.php

+0

只有當您在分配部分放置圓括號時才起作用,否則由於操作順序,它會失敗。 –