Javascript无法识别的语法

时间:2013-11-29 21:53:14

标签: javascript

我不明白最后一行代码在这里做了什么。它看起来像在函数末尾标记的随机括号。我不懂语法。

(function (self, $, undefined) {
    self.methodName = function () {
        //do stuff
    }
})(This.IsTheNameOf.MyJsFile, Jquery);

我所知道的:self =命名空间组织工具。 $ = JQuery。最后一行代码中的第一件事是包含此代码的JS文件的名称。最后一行显然不是函数调用,但它似乎与self和$重合。

非常感谢任何知识!

1 个答案:

答案 0 :(得分:3)

留出一些我们拥有的东西

function (self, $, undefined) {
    // ...
}

所以,基本上,一个函数(虽然名称缺失)。现在这包含在

(/* above code here */)(...);

这是所谓的 IIFE (立即调用的函数表达式)。换句话说:创建并立即调用该函数。这样做的原因是它创建了一个可以拥有“私有”变量的范围。此外,jQuery会在该范围内为$添加别名,以便于参考。同样,This.IsTheNameOf.MyJsFile会将别名变为self

如果仔细观察,该函数需要三个参数,但只能用两个参数调用。这会强制最后一个参数为(本机)undefined,这恰好是IIFE内该参数的名称。这可以确保该范围内的undefined具有预期值(允许旧版浏览器覆盖它)。