MVVM模块中闭包的目的是什么?

时间:2014-05-14 15:25:31

标签: javascript mvvm knockout.js

我正在使用以下内容:

define(["knockout"], function(ko) {

    var vm = this;

    (function() {    // I'm tempted to delete this
        // init
        vm.data = ko.observable("");
        // other stuff         

    })();  // and this

    return vm;
});

写这篇文章的人说他们认为这是一种最佳做法,但并不知道为什么。我知道这是一个关闭,但我们不需要任何"私人"在这种情况下闭包提供的功能,所以这对我来说似乎是一种噪音,但我可能忽略了一些东西。重点是什么?

1 个答案:

答案 0 :(得分:3)

您会在这个问题的答案中找到有关该符号的完整说明:What is the purpose of wrapping whole Javascript files in anonymous functions like “(function(){ … })()”?

简短版本(已接受答案的样本):

  

你在写(function(){... code ...})()时正在做什么   你是在函数文字中创建代码(意思是整体   “对象”实际上是一个函数)。在那之后,你是自我调用的   功能(final())。所以我提到的这个的主要优点   以前,是否可以拥有私有方法/功能和属性:

> (function() {    var private_var;
> 
>    function private_function() {
>      //code    } })()