繁体   English   中英

JavaScript中变量的局部和全局范围

[英]Local and global scope of variables in JavaScript

我曾尝试阅读有关该主题的其他文章,但还没有走运。 在下面的这段代码中,为什么f2()无法访问f1()中定义的var。 变量“名称”不是函数f2()的全局变量吗? f2()是否应该看到var“名称”?

    function f1() {
     var name = "david";
     function f2() {
        document.writeln(name);
     }
     document.writeln(name);
  }                   

  f2(); // does not write out "david".

您的f2()仅在f1()范围内定义。 你不能在全球范围内称呼它

Javascript是函数级范围的,而不是块范围的。 函数可以访问其父代的函数变量,但不能访问其内部函数中定义的变量。 您可以从f1返回f2并这样调用

     function f1() {
         var name = "david";

         document.writeln(name);

         return f2

         function f2() {
            document.writeln(name);
         }

      } 

var f2 = f1();
f2();

您需要阅读Javascript闭包。

这是您的代码段的一个版本,该代码段演示了如何从内部函数中的外部函数访问变量(如果要全局调用内部函数)。

function f1()
{
   var name = "david";
   return function()
   {
      console.log(name);
   }
}
var f2 = f1();
f2();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM