0

这是我从教程中找到的一段代码,但我无法清楚地理解它的目的。这是示例:

应用程序.js

var oojs = (function(oojs){



    return oojs;

}(oojs || {}));

我感到困惑的第一部分是为什么使用与参数相同的参数调用它?
第二个疑问是为什么如果没有“oojs”应该以对象字面量作为参数调用函数?这是必要的吗?
最后为什么它应该返回与其函数名(oojs)相同的原因。


也许这是一种创建对象的方法,但如果有人可以帮助我解决这个问题,我将不胜感激。

4

1 回答 1

0

这只是 JavaScript 中的范围规则。每当创建一个新函数时,就会创建一个新的变量范围。参数名称oojs确实是与外部参数相同的标识符oojs,但它更本地化。

这是一个简化的例子

function foo(x){
    console.log(x + 2); 
}
var x = 3; // this is a different x, it belongs to the outer scope, and not the function
foo(x); // logs 5, since x is passed to the function, then x + 2 is logged

在此代码示例中,想法是仅oojs在不存在时进行更改,然后将其设置为立即调用的函数表达式的返回值。它类似于组合模块模式。就个人而言,当涉及到很多行时,我发现语法相当混乱。

于 2014-05-19T16:46:41.373 回答