这是我从教程中找到的代码片段,但我无法理解它的目的。这是一个例子:
app.js
var oojs = (function(oojs){
return oojs;
}(oojs || {}));
第一部分我很困惑,为什么用与参数相同的参数调用它?
第二个疑问是为什么如果没有“oojs”应该用对象文字作为参数调用函数?这有必要吗?
最后为什么它应该返回与它的函数名称(oojs)相同。
也许这是创建对象的一种方式,但如果有人能帮我满足这个需求,我将非常感激。
答案 0 :(得分: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
(如果它不存在),然后将其设置为紧接调用的函数表达式的返回值。它与作曲module pattern相似。就个人而言,当涉及到许多行时,我发现语法相当混乱。