2017-03-03 3 views
-4

私はJavascriptが新しく、次のコードスニペットの違いについて少し混乱します。次のjsコードスニペットの相違点

スニペット1:

window.onload = function() { 
    var friendlyChat = new FriendlyChat(); 
}; 

スニペット2:

window.onload = function() { 
    window.friendlyChat = new FriendlyChat(); 
}; 

、誰もがそれらの間の違いを教えてくださいことはできますか?

+3

最初にローカル変数を作成します。 2番目の変数はグローバル変数を作成します。 – gyre

+0

ここに貴重な資料があります:https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/ – haxxxton

答えて

5

スニペット1:

window.onload = function() { 
    var friendlyChat = new FriendlyChat(); 
}; 

var sample = function() { 
    var sampleInstance = friendlyChat; //error 
    // friendlyChat cannot be accesses here as you have declared it 
    // at function scope which gets destroyed once the function has 
    // returned or completed the execution. 
} 

friendlyChatはローカル変数であり、この関数内でのみアクセスすることができます。

スニペット2:

window.onload = function() { 
    window.friendlyChat = new FriendlyChat(); 
}; 

var sample = function() { 
    var sampleInstance = friendlyChat; 
    // friendlyChat can be accesses here as you have declared it at 
    // windows scope which is available globally. 
} 

friendlyChatグローバル変数であり、それは、ルートレベルすなわちウィンドウで宣言されているようにどこにでもアクセスすることができます。