2017-08-31 8 views
1

今日JavaScriptで行います これは[var_name] = 12とは何ですか;私はw3resource上のコードを見てきましたし、私はそれが何を考えていた

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

これを行わず、このリソースをこれ以上使用しないでください。 –

+0

グローバルスコープ内の 'this'はウィンドウオブジェクトを参照します。グローバルスコープで定義した変数は、すべてウィンドウオブジェクト内にあります。だから 'this [var_name] = n'はグローバルスコープに' var_name = n'を書くのと同じです。 – Danmoreng

+0

@Danmoreng *グローバルスコープで定義する変数はすべてウィンドウオブジェクト内にあります。*これはいくつかの点で間違っています。まず、ブラウザ内にのみあります。次に、 'var'を使って宣言された変数のみです。 –

答えて

0

は、常に我々は機能が方法であることを対象に、むしろ実行、またはしている機能の「所有者」を意味し、コードを理解するのに役立ちます願っています。しかし、コードではthisがグローバルに使用されているため、文書レベルに関連しています。だから、

var var_name = 'abcd'; 

は値abcdで変数名var_nameを作成します。これは一般的に変数を作成するために使用されます。

しかし、あなたがオブジェクトを作るとき

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

にアクセスすることができます。オブジェクトの寿命とともにプロパティを存在させたいときは、プロパティをthisに追加します。ローカル変数にはvarを使用します。

したがって、this[var_name]およびは別々に処理される。

+0

私はこの答えを完全に解析することができません。関数は "所有者"を持たず、所有者が何であれ、(必ず)これが参照するものではありません。ブラウザでグローバルに使用されている 'this'はドキュメントレベルには関係しません。 **ウィンドウ**レベルに関連しています。これはまったく異なるものです。 –

+0

ありがとうございました<3。 – Xcode

0

私はラインにコメントを追加しました。これはあなたのJavaScript this

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) 
関連する問題

 関連する問題