2016-11-02 6 views
0

私は1つのHTMLファイル内で複数のJSファイルを参照しています。私は、これらのJSファイルに変数名と関数名が重複してはならないことを知っています。しかし、それはグローバル変数またはすべての変数(関数内のローカル変数さえ)に限定されていますか?複数のJSファイルを使用する - 変数/関数が重複しています。

+0

同じスコープ内の変数のみ。 JSファイルはグローバルスコープを共有するだけなので、注意する必要があります。 – vlaz

+0

あなたのスクリプトを '(function(){'use strict;;/* script * /})();'にラップすると、誤ってグローバルスコープに何かを漏らすことはできません。 'window'オブジェクトの明示的に設定されたプロパティだけがグローバルになります –

+0

良い点@WilliamBしかし、厳密には_strict_と混乱しないように厳密に注意してください:) – tmslnz

答えて

1

// These will go into global scope 
 

 
nonKeywordedVarA = true; // just don't 
 

 
var nonKeywordedVarC = true; 
 

 
function leaky() { 
 
    nonKeywordedVarB = true; 
 
} 
 

 
// These will stay where you put them 
 

 
function nonLeakyA() { 
 
    var functionScoped = true; 
 
} 
 

 
function nonLeakyB() { 
 
    var functionScoped = false; 
 
} 
 

 
if (true) { 
 
    let blockScoped = true; 
 
} 
 

 
if (true) { 
 
    let blockScoped = false; 
 
} 
 

 

 
leaky(); 
 
nonLeakyA(); 
 
nonLeakyB(); 
 

 
// Here we log global scope 
 
console.log(typeof nonKeywordedVarA) 
 
console.log(typeof nonKeywordedVarB) 
 
console.log(typeof nonKeywordedVarC) 
 
console.log(typeof functionScoped) 
 
console.log(typeof blockScoped)

これは、同じスコープ内の変数に限定される:varなし宣言

  1. 変数、letconstキーワード(例えばSOMEVAR =真)。これらは、あなたの質問に対する答えはないですストレートグローバルスコープ(例えばwindowオブジェクト)

  2. 任意の関数のスコープ外で宣言された変数(またはletの場合は範囲​​をブロックする)要するに

に漏れ入ります異なるスコープで同じ名前の変数が心配です。

+0

メンテナンスのため、私のテスト環境は現在停止しています。これをテストし、できるだけ早く対応します。あなたの返事をありがとう! –

関連する問題