javascript 提升全局变量和函数
javascript hoisting for global variable and function
我想知道吊装。我知道如果全局函数名称与全局变量相同,函数会覆盖变量的名称。对吗?
这是我的代码。
(function() {
console.log('console.log#1 ' + globalString); // globalString function
})();
var globalString = 'I\'m globalString variable';
(function() {
console.log('console.log#2 ' + globalString); // string
})();
function globalString() {
console.log('I\'m globalString function');
}
结果让我很震惊
console.log#1 function globalString ()
{
console.log ( 'I\'m globalString function' );
}
console.log#2 I'm globalString variable
如果函数定义覆盖变量的 console.log#2 打印 globalString 函数。
我不知道变量和函数如何提升。
请帮忙
函数声明(比如你的 globalString()
)被提升。对于解释器,您的代码看起来像这样:
var globalString = function globalString() {
console.log('I\'m globalString function');
};
(function() {
console.log('console.log#1 ' + globalString); // globalString function
})();
globalString = 'I\'m globalString variable';
(function() {
console.log('console.log#2 ' + globalString); // string
})();
在初始 IIFE 运行之前,globalString
是函数。在初始 IIFE 运行之后,但在第二个 IIFE 运行之前,globalString
被重新分配给字符串。不会提升普通赋值 - 只有变量名是。
我想知道吊装。我知道如果全局函数名称与全局变量相同,函数会覆盖变量的名称。对吗?
这是我的代码。
(function() {
console.log('console.log#1 ' + globalString); // globalString function
})();
var globalString = 'I\'m globalString variable';
(function() {
console.log('console.log#2 ' + globalString); // string
})();
function globalString() {
console.log('I\'m globalString function');
}
结果让我很震惊
console.log#1 function globalString ()
{
console.log ( 'I\'m globalString function' );
}
console.log#2 I'm globalString variable
如果函数定义覆盖变量的 console.log#2 打印 globalString 函数。 我不知道变量和函数如何提升。 请帮忙
函数声明(比如你的 globalString()
)被提升。对于解释器,您的代码看起来像这样:
var globalString = function globalString() {
console.log('I\'m globalString function');
};
(function() {
console.log('console.log#1 ' + globalString); // globalString function
})();
globalString = 'I\'m globalString variable';
(function() {
console.log('console.log#2 ' + globalString); // string
})();
在初始 IIFE 运行之前,globalString
是函数。在初始 IIFE 运行之后,但在第二个 IIFE 运行之前,globalString
被重新分配给字符串。不会提升普通赋值 - 只有变量名是。