JavaScript中的声明提升实例详解
czpcalm 人气:0函数的提升
声明提升(hosting)是 JavaScript 解析器的一个特性,它会把代码中的函数、变量声明语句作用提取到它所在作用域的最前面。
JavaScript 是支持在函数声明之前调用函数的。
say(); function say() { console.log("Hello"); }
解析器会扫描作用域内的代码,把函数声明提取到执行代码的前面。所以,解析器是这样看这段代码的:
function say() { console.log("Hello"); } say();
除了普通函数,async function
, function *
, async function *
也有相同的提升效果。
var 变量声明提升
var
关键字的变量声明会被提升,但变量的赋值不会被提升。
console.log(foo); // undefined var foo = "bar"; console.log(foo); // 'bar'
以上代码的解析结果为:
var foo; console.log(foo); foo = "bar"; console.log(foo);
这可能会导致一些奇怪的问题:
var x = "x in global"; (function () { // 这里期望读取全局变量 console.log(x); // 结果为undefined.
加载全部内容
- 猜你喜欢
- 用户评论