2017-03-03 63 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是一个全局变量,因为它已经在根级别即窗口被宣布可以在任何地方访问。