亲宝软件园·资讯

展开

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. 

加载全部内容

相关教程
猜你喜欢
用户评论