2017-08-31 44 views
1

今天我看到的代碼上w3resource,我想它做什麼:這是什麼[var_name] = 12;做在JavaScript

var var_name = 'abcd'; 
 
var n = 120; 
 
this[var_name] = n; 
 
console.log(this[var_name]); 
 
// the OUTPUT : 120 
 

 
// This line was added to this example. 
 
console.log(abcd);

首先,我認爲這是改變變量值,但是當我在鍵入var_name控制檯來獲得它給我的價值'abcd'。其實這對我來說非常混亂。

+1

不要這樣做,不要再使用這個資源。 – 2017-08-31 11:06:06

+0

'全球範圍內的這個'是指窗口對象。您在全局範圍中定義的變量都在窗口對象中。所以'this [var_name] = n'與在全局範圍內寫入'var_name = n'相同。 – Danmoreng

+0

@Danmoreng *在全局範圍中定義的變量都在窗口對象中。*這是不正確的,在幾個方面。首先,它只在瀏覽器中。其次,它僅適用於使用'var'聲明的變量。 – 2017-08-31 11:09:28

回答

0

在JavaScript this總是指的是功能的「所有者」我們正在執行的,或者說,對象是一個函數的方法。但是由於在代碼中全局使用this,它與文檔級別有關。所以,

var var_name = 'abcd'; 

創建一個變量名var_name與價值abcd。這通常用於創建變量。

但是,

var n = 120; 
this[var_name] = n; 

當你做出一個對象可以被訪問。當我們希望屬性與對象的生命一起存在時,我們將屬性添加到this。我們使用var作爲局部變量。因此,this[var_name]var_name被分開處理。

+0

我完全無法解析這個答案。函數沒有「所有者」,也不管所有者是什麼,這不是(必然)所指的。全局使用的「this'(在瀏覽器中)與文檔級別無關;它涉及**窗口**的級別,這是完全不同的。 – 2017-08-31 11:12:11

+0

謝謝我終於明白了<3。 – Xcode

0

嘿,我已經添加了對線條的評論。希望這有助於你理解代碼

var var_name = 'abcd'; //creates a new variable with the name var_name and the 
value 'abcd' 
var n = 120; //creates a new variable with the name n and the value 120 
this[var_name] = n; //add a new property with the value of var_name (abcd) to this and the value of n (120)