以下js代码片段之间的区别
问题描述:
我是Javascript新手,对以下代码片段之间的区别感到困惑。以下js代码片段之间的区别
片段1:
window.onload = function() {
var friendlyChat = new FriendlyChat();
};
片段2:
window.onload = function() {
window.friendlyChat = new FriendlyChat();
};
谁能请告诉他们有什么区别?
答
片段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
是一个全局变量,因为它已经在根级别即窗口被宣布可以在任何地方访问。
第一个创建一个局部变量;第二个创建一个全局变量。 – gyre
也许这里可能是一个宝贵的资源:https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/ – haxxxton