Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新手:在MDN上创建有意义的Javascript闭包示例_Javascript_Closures - Fatal编程技术网

新手:在MDN上创建有意义的Javascript闭包示例

新手:在MDN上创建有意义的Javascript闭包示例,javascript,closures,Javascript,Closures,我对Javascript非常陌生,我一直在阅读有关Javascript的文章。虽然我理解了该链接上的前两个代码片段,但我对这里复制的第三个示例中使用的语法感到困惑 var getCode = (function(){ var secureCode = "0]Eal(eh&2"; return function () { return secureCode; }; })();

我对Javascript非常陌生,我一直在阅读有关Javascript的文章。虽然我理解了该链接上的前两个代码片段,但我对这里复制的第三个示例中使用的语法感到困惑

    var getCode = (function(){
         var secureCode = "0]Eal(eh&2"; 

         return function () {
             return secureCode;
         };
     })();

     getCode();    // Returns the secureCode
将外部函数包装在圆括号内,后跟空括号和分号的目的是什么?这个语法是什么意思或者它有什么作用?为什么不按下面的方式写呢

    var getCode = function() {
         var secureCode = "0]Eal(eh&2"; 

         return function () {
             return secureCode;
         }
    };

    getCode();    // Returns the secureCode

示例的要点是
secureCode
类似于一个私有变量。括号中的函数执行后,
secureCode
不在范围内,因此无法写入;但是返回的函数仍然可以访问变量,并且可以用作getter。

换句话说,您将安全代码变量封装为常量。它无法写入,因此无法更改,但可以通过getter读取。

第一个问题的答案是否。第一组括号中有一个函数;这与括号中没有任何内容完全不同。如果您点击F12打开开发工具,并粘贴到第一个示例中,您将得到一个语法错误,谢谢。为了清楚起见,我刚刚更新了我的问题。我的代码段版本是否与原始代码段的用途不同?@user710843不,它没有。在第一个版本中,环绕外部匿名函数的括号是不必要的,但是最后分号之前(调用
getCode()
之前)的
()
是必要的。最后一个
()
表示调用匿名函数,因此“getCode”的值就是从外部函数内部返回的函数。您的代码不涉及该函数调用,因此您的“getCode”是外部函数,而不是内部函数。将外部函数包装在圆括号内,后跟空括号和分号的目的是什么?结尾的空括号导致调用函数。