gpt4 book ai didi

javascript变量访问之谜

转载 作者:行者123 更新时间:2023-12-03 17:02:25 27 4
gpt4 key购买 nike

var foo = 'hello';

var myfunc = function() {
console.log(foo);
var foo = foo || 'world';
console.log(foo);
}

myfunc();

为什么第一个 foo 被记录为“未定义”?

最佳答案

因为您实际在哪一行使用“var”声明一个变量是无关紧要的,只要它保持在同一个函数中即可。如果一个函数在其中的任何地方声明了一个 var x,那么对该名称的任何引用都被认为是声明它的范围的局部引用。

当然,通常您不会在变量声明之前引用它,但请考虑以下片段:

function foo(a) {
if (a) {
var b = "something";
}
console.log(b);
}

变量 b 是该函数的局部变量,因此无论 a 的值如何,使用 b 都不会意外引用变量在封闭范围内声明。

注意:javascript 只有函数级作用域,没有 block 级作用域。

关于javascript变量访问之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3745392/

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