ser*_*g66 4 javascript function identifier
我已经看到了编写自调函数的下一种方法:
(function (app) {
app.foo = {
bar: function(){}
};
}(App));
Run Code Online (Sandbox Code Playgroud)
App全局对象在哪里?
我想知道,为什么我们需要App作为一个参数传递给一个函数?为什么不直接用这个:
(function () {
App.foo = {
bar: function(){}
};
}());
Run Code Online (Sandbox Code Playgroud)
我看到使用第一种方式只有一个优点.如果我们由于某种原因重命名App对象,那么我们可以轻松地在括号中重命名param,我们的代码将在其工作时起作用.但是在第二种方式的情况下,我们可能需要App在我们使用它的所有地方重命名.
还有其他差异吗?
这意味着函数的内容 - 关于app标识符 - 对全局(或父)范围是不可知的.
完成此操作的其中一个场景是,例如,使用jQuery,当您不想假设调用jQuery对象时$(例如,如果启用了无冲突模式),但您确实希望通过那个名字.通过这样的匿名函数(即(function($) {})(jQuery))传递它允许您生成本地范围的别名,该别名不会干扰$父/全局范围中名称的外部含义.