gpt4 book ai didi

javascript - 变量作用域和 javascript 执行上下文

转载 作者:行者123 更新时间:2023-11-30 16:56:43 27 4
gpt4 key购买 nike

我在理解 Javascript 执行上下文时遇到了一些困难

看下面的代码:

<script >    

var global_var;
first();

function first() {
var first_var = 'a';
second();
}

function second() {
var second_var = 'b';

console.log(first_var);
console.log(second_var);
}

console.log('in the outer');
//second();

</script>

根据我的理解,当first函数调用second函数时,第二个函数在第一个函数的执行上下文中,所以,second > 也可以访问 first 函数的属性,这里是 first_var

但是,函数second中的实际输出显示“first_var is not defined”

我很困惑,谁能给我解释一下?

提前致谢。

最佳答案

作用域基于代码的词法结构,而不是函数之间的动态运行时关系(“执行线程”)。词法结构是代码的静态组织;函数内部函数的“嵌套”。

在您的例子中,“second”函数是在“first”函数之外声明的,因此“first”中的局部变量对“second”中的代码不可见。

如果要将“second”函数移到“first”中:

function first() {
function second() {
var second_var = 'b';

console.log(first_var);
console.log(second_var);
}
var first_var = 'a';
second();
}

然后变量可见。

关于javascript - 变量作用域和 javascript 执行上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590656/

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