我想问一下如何解释这个(javascript函数)
我认为这应该是因为词汇范围或静态范围以及函数范围 词法作用域表示变量作用域取决于函数创建的时间,在您的案例中,函数b是创建的,num的作用域是全局的我想问一下如何解释这个(javascript函数),javascript,function,scope,Javascript,Function,Scope,我认为这应该是因为词汇范围或静态范围以及函数范围 词法作用域表示变量作用域取决于函数创建的时间,在您的案例中,函数b是创建的,num的作用域是全局的 function b() { console.log(num)//num is scoped to its parent function it was created in } function a() { var num = 3;//b will not have access to this num since it was not
function b() {
console.log(num)//num is scoped to its parent function it was created in
}
function a() {
var num = 3;//b will not have access to this num since it was not created here
arguments[0]();
}
num = 1;
a(test)
但如果它是动态作用域,那么变量作用域是基于执行顺序的,在这种情况下num应该是调用方a的num的作用域
如果您尝试此代码段,它将正确打印3
function a(cb) {
function b() {
console.log(num)
}//b is created here so it has access to num
var num = 3;
b();
}
num = 1;
a();
您可以阅读静态作用域和动态作用域,其中静态与动态、函数与块作用域的解释更好。请发布代码而不是图片,这更适合于代码审查而不是堆栈overflow@user7951676不!代码的解释在代码评审时是离题的。我投票以离题结束这个问题,因为它不包含有问题的代码