gpt4 book ai didi

Javascript 函数和变量范围

转载 作者:行者123 更新时间:2023-11-28 15:42:49 25 4
gpt4 key购买 nike

问个问题,因为今天有一件事让我很困惑。下面是一段 JavaScript 代码:

var a = [1, 2, 3, 4];

function init() {

console.log(a);

if (false) {
var a = [9, 8, 7];
}
}

init();

这个简单的代码在 JS 控制台中记录“未定义”。我发现原因是第5行:

var a = [9, 8, 7];

如果该条件内没有单词 var,它将记录正确的结果 [1, 2, 3, 4]

我的问题是:为什么 JavaScript 解释器会考虑永远不会执行的代码?

示例:http://jsfiddle.net/5DPCz/

最佳答案

不能在 JavaScript 函数的中间声明变量; 所有变量都有函数作用域。实际上,变量声明是 "hoisted"到函数的顶部。您的函数只能访问局部变量a,无论它在函数中的何处声明。

这就是为什么 JSLint(以及大多数其他 linting 工具)会建议您将所有变量声明移至函数顶部;无论如何,这就是它们有效编写的地方。

无论您将 var a 放置在函数中的哪个位置,您的代码都会以这种方式有效执行:

var a = [1, 2, 3, 4];

function init() {
var a;

console.log(a);

if (false) {
a = [9, 8, 7];
}
}

init();

关于Javascript 函数和变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23295814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com