全局访问JavaScript函数局部变量

时间:2015-01-06 19:33:28

标签: javascript closures

以下是我正在编写的教科书,但有些内容没有意义。有人可以向我解释我如何能够从全球范围访问本地变量“secret”吗?当我运行代码时,输​​出为'100'。我认为无法从函数外部访问函数内部声明的变量。这里发生了什么,我可以将“秘密”设置为100?

    var set, get;

    function val() {
        var secret = 0;

        set = function (arg) {
            if (typeof(arg) === "number") {
                secret = arg;   
            }
        };

        get = function () {
            return secret;
        };
    }

    secret = 100;

    document.write(secret);

输出> 100


顺便说一句,教科书最初具有作为即时功能的功能。我改为上述希望会导致不同的结果。

1 个答案:

答案 0 :(得分:0)

您拥有全局本地secret变量。

// Creating a global variable, not affecting the one inside val
secret = 100;
// This is accessing the global variable
document.write(secret);

如果您实际运行val功能,则会发现它们不同



 var set, get;

 function val() {
   var secret = 0;

   set = function(arg) {
     if (typeof(arg) === "number") {
       secret = arg;
     }
   };

   get = function() {
     return secret;
   };
 }

val();

secret = 100;
document.write("global secret = " + secret + '<br />');
set(5);
document.write("private secret = " + get() + '<br />');
document.write("global secret unaffected = " + secret + '<br />');
&#13;
&#13;
&#13;