• 1
  • 新人请关照

请问该函数的返回值为啥是local?

var scope = 'global'
function checkScope() {
 var scope = 'local';
 function f() {
    return scope;
 }
 return f;
}
checkScope()();
阅读 157
评论
    5 个回答

    JavaScript 采用的是词法作用域,函数的作用域基于函数创建的位置。

      简单理解为 就近原则

        google下JS闭包相关的知识吧。

          简单来说就是

          function checkScope() {
           var scope = 'local';
           function f() {
              return scope;
           }
           return f;
          }
          checkScope()();

          这段代码和上面的var scope = 'global';没有一点关系~

          因为函数体内重新定义了scope变量的话,不会再去使用外层变量。

            • 539

            你用了var来声明变量,那么就可以在任何地方对该值进行重新赋值。
            如果你获取值的地方是在重新赋值后,那会返回重新赋值的结果。

            如果你用let或者const声明变量,就会有不同的效果。

              撰写回答

              登录后参与交流、获取后续更新提醒

              相似问题
              推荐文章