我想问一下如何解释这个(javascript函数)

我想问一下如何解释这个(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

我认为这应该是因为词汇范围或静态范围以及函数范围

词法作用域表示变量作用域取决于函数创建的时间,在您的案例中,函数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 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不!代码的解释在代码评审时是离题的。我投票以离题结束这个问题,因为它不包含有问题的代码