2017-04-12 93 views
0

對於特種部隊人員的好日子,我是新來這個論壇,也是我正在學習如何編碼JavaScript。我的問題是賦值運算符是如何工作的?我知道(例如* =),其Javascript指派運營商

var (nameOfVariable)=(value) 
    nameOfVariable*=(some value) 

是:

nameOfVariable= nameOfVariable * (some value) == value*(some value) 

現在,例如:

var value=2; 
    console.log(value*=2); == 4 

所以每N次,我把(價值* = 2) console.log(),它給我(值* 2^n)意思,

var value=2; 
    console.log(value*=2); == 4 (1st time) 
    console.log(value*=2); == 8 (2nd time) 
    console.log(value*=2); == 2 * (2^n) == 16 (nth time) 

我嘗試到這個while循環,這是發生了什麼事:

var value=2;   | (Console gave me this) 
    while(value<=10){  | 2 
    console.log(value); | 4 
    value*=2; }   | 8 
    console.log(value); | 16 

爲什麼是賦值運算符在「while」循環括號內不是唯一的?爲什麼會影響外部變量?這是否意味着每次涉及賦值操作符的變量都在console.log()內寫入n次時,它會在我的情況下返回值2^n(value)?我希望能爲這一點提供啓發,因爲我知道掌握編程意味着要掌握基本知識。

+2

它是循環內部的相同變量(它是**而不是**閉包) –

+0

while循環不是閉包;這是一個構造。這裏沒有專門的範圍 - 適用於函數而不是循環。 – Utkanos

+0

具有諷刺意味的是,如果有真正的關閉,你會看到相同的行爲,因爲變量'value'將變成封閉的 – slebetman

回答

0

賦值運算符在循環內部不是唯一的原因是「範圍」。

你已經在while循環外面將'value'變量初始化爲2,所以當你改變'value'的值時,它將新值賦給實例化變量。

This guide應該有所幫助。

+1

由於那個「範圍」,我能夠訪問這個視頻https://www.youtube.com/watch?v=SBwoFkRjZvE,一切似乎更清晰:),謝謝! –