2017-03-03 64 views
-4

我是Javascript新手,對以下代碼片段之間的區別感到困惑。以下js代碼片段之間的區別

片段1:

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

片段2:

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

誰能請告訴他們有什麼區別?

+3

第一個創建一個局部變量;第二個創建一個全局變量。 – 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是一個全局變量,因爲它已經在根級別即窗口被宣佈可以在任何地方訪問。