我在代碼中看到我經常使用下面的代碼樣式;Javascript:var1 == true &&(var2 = true)
var1 == true && (var2 = true)
經過一些測試我想它歸結爲:
這是正確的,或者是有更多的東西?爲什麼會有人使用它,因爲可讀性大大降低,因爲你乍一看就是對兩個變量的檢查。所以,你真的必須開始看單或雙平等歌曲和圓括號,哪些只是有點,你知道..只是好奇在這裏..
我在代碼中看到我經常使用下面的代碼樣式;Javascript:var1 == true &&(var2 = true)
var1 == true && (var2 = true)
經過一些測試我想它歸結爲:
這是正確的,或者是有更多的東西?爲什麼會有人使用它,因爲可讀性大大降低,因爲你乍一看就是對兩個變量的檢查。所以,你真的必須開始看單或雙平等歌曲和圓括號,哪些只是有點,你知道..只是好奇在這裏..
是的,這是等價的。據我所知,它被稱爲short-circuit evaluation,它描述了這樣一個事實,即只要其中一個部分是虛假的,解釋器就會爲整個布爾表達式返回false。
事實上,在你的例子中,它減少了可讀性。但我認爲它只是您工具箱中的另一個工具,當您覺得它可能有用時,可以使用它。考慮以下內容:
return user && user.name;
這是我傾向於使用它的一個示例。在這種情況下,我認爲它實際上比
if (user) {
return user.name;
} else {
return undefined; // or null or something alike
}
UPDATE
我想給你舉個例子,當我認爲這是種有益的構建更具可讀性。想想ES6的箭頭功能,如user => user.name
。它不需要{}
來打開一個身體,因爲它只有一條線。如果你想記錄的東西到控制檯(調試),你會最終不得不
user => {
console.log(user); // or something alike
return user.name;
}
你還不如用較短的變體
user => console.log(user) || user.name
因爲console.log
回報undefined
登錄到控制檯後,因此返回user.name
。
是的,正如你所說的,還有更多。
第一部分var1 == true
檢查結果是否爲true
或false
。
如果條件爲false
之後的代碼沒有得到檢查或評估,因此var2
未設置爲true
。
但是如果條件var1 == true
的第一部分是true
顯然是真的,則檢查&&
之後的部分條件語句的第二部分。
現在條件的第二部分是它設置的操作(var2 = true)
這是一種真理操作。
我們可以編輯你的代碼一點點的幫助您瞭解操作更清晰:
if(var1 === true && (var2 = true)){console.log('good');}
我希望這有助於
這是正確的,是的,它是壞的可讀性。 – styfle
[單行如果vs &&在JavaScript中](https://stackoverflow.com/questions/34704750/one-line-if-vs-in-javascript) – Xufox
與'true'的第一次比較是多餘的。 –