2017-09-07 58 views
-2

Javascript新手在這裏,我的心靈正在彎腰。爲什麼var test = false在test =!test時變爲true?

var test = false 
test = !test 
// returns true 

我知道了!是一個bang運算符,並將布爾值更改爲與當前的相反。

但我無法掌握髮生了什麼事在

test = !test 

變量測試所指向的值在第一個假,但這個變量越來越設置爲自己?看起來測試變量已經設置爲自己,然後爆炸操作符將其設置爲真。但是賦值運算符的兩邊可以設置爲相同的變量嗎?

+4

'//返回FALSE' - 沒有它不 –

+2

這就像'X = X + 1'。請記住,首先評估右側,然後將其分配到左側。 – Xufox

+1

它返回true dude! – Mikkel

回答

0

讓我們一步一步來做。

test = 

您現在分配test新值

= ![...] 

哪家的邏輯相反...

= !test 

...在test當前值。這段代碼總結的是反轉測試並將該操作的結果反饋到變量本身,從而有效地改變它。

什麼可能有助於理解整個操作是test指着假,但假的。

0
var test = false; // test = false 
test = !test; // test = true (because `test` was `false`, now it's equal to opposite value: `true`) 

而且不要忽略在行結束分號。

0

var test = false

這裏要設置的test值是假的。

test = !test

首先評價是右側。所以通過回想test你會收到它的價值。

Ultimatelly testfalse相同。所以!test變成!false,其被評估爲true

因此您test = !test相同test = !false最後就變成test = true

0

你只分配變量測試新的價值,新價值!測試。

var test = false; 
 
test = !test; //you assign new value to test, and old value will be replaced 
 
document.getElementById('tes').value = test;
<input type='text' id='tes'>

相關問題