我正在使用以下内容:
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;
});
写这篇文章的人说他们认为这是一种最佳做法,但并不知道为什么。我知道这是一个关闭,但我们不需要任何"私人"在这种情况下闭包提供的功能,所以这对我来说似乎是一种噪音,但我可能忽略了一些东西。重点是什么?
答案 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 } })()