我在一些腳本的NodeJS變量/對象已經看到了正在使用的是這樣的:結果如下:var myvar1 = myvar2 = myvar3?
var myvar1 = myvar2 = myvar3;
這是爲什麼使用,這是什麼意思?
我在一些腳本的NodeJS變量/對象已經看到了正在使用的是這樣的:結果如下:var myvar1 = myvar2 = myvar3?
var myvar1 = myvar2 = myvar3;
這是爲什麼使用,這是什麼意思?
這臺myvar2
至myvar3
,並設置myvar1
到myvar2
。
我假設myvar3
和myvar2
已在此行之前聲明。如果不是,myvar2
將是全球性的(因爲沒有var
),並且如果沒有定義myvar3
,則會出現錯誤。
這將擴展爲:
myvar2 = myvar3; // Notice there's no "var" here
var myvar1 = myvar2;
我認爲'myvar2'更可能沒有宣佈聲明;代碼的作者可能沒有意識到它的範圍含義。 –
如果:
var myvar3 = 5;
var myvar1 = myvar2 = myvar3;
然後,他們都是
myvar1和myvar2都得到myvar3的名稱。 要評估的第一個表達式是myvar2 = myvar3。這將myvar3分配給myvar2。此操作的結果是分配的值,然後將其分配給myvar1。
它會評估爲:
var myvar1 = myvar2 = myvar3;
var myvar1 = myvar3; // 'myvar2' has been set to 'myvar3' by now
myvar3; // 'myvar1' has been set to 'myvar3' by now
它首先會分配給myvar3
myvar2
(不var
,所以可能是隱性的全球,注意這一點)。
然後它會將myvar3
的值分配給myvar1
,因爲返回了設定值。
結果再次返回,這不會再做任何事情 - 在最後一行中,myvar3
的值沒有任何反應。
所以最終他們都具有相同的價值。
難道你不是指更像'myvar2 = myvar3','var myvar1 = myvar2'嗎?無論如何,'myvar2'沒有插入本地範圍的事實很重要。 +1。 –
@Chris Morgan:我不確定是左側還是右側返回。但是,由於兩者都具有相同的價值,我認爲在這方面沒有真正的區別。 – pimvdb
只是你在那裏沒有什麼意義。重讀它......你正在回答這個問題。 –
這會將變量myvar1和myvar2分配給myvar3的值。爲什麼他們這樣做對我來說是未知的,但我最好的猜測是他們希望兩個變量值是myvar3的相同值。
可能的用途:將一些變量初始化爲某個值。例如,'current = minimum = foo.minimum'。 –
如已經解釋的那樣,該聲明導致所有變量具有值myvar3
。
我想補充:使用一樣,你必須提防的範圍說明,以實際行動表明:
function foo(){
var c = 1;
var a = b = c;
console.log(a,b,c); //=> 1 1 1
c = 2;
console.log(a,b,c); //=> 1 1 2
}
console.log(b); //=> 1! [b] is now a variable in the global scope
和分配的非原始值的(所以,對對象的引用)
function foo(){
var c = {};
var a = b = c;
c.bar = 2;
console.log(a.bar,b.bar,c.bar);
//=> 1 1 1 (a, b and c point to the same object)
}
地段熱烈的回答,但只有一對夫婦正確地提到範圍。 –
[JavaScript的多個左手任務]可能重複(http:// stackoverflow。com/questions/1758576 /多左手作業與javascript) –