我不明白最后一行代码在这里做了什么。它看起来像在函数末尾标记的随机括号。我不懂语法。
(function (self, $, undefined) {
self.methodName = function () {
//do stuff
}
})(This.IsTheNameOf.MyJsFile, Jquery);
我所知道的:self =命名空间组织工具。 $ = JQuery。最后一行代码中的第一件事是包含此代码的JS文件的名称。最后一行显然不是函数调用,但它似乎与self和$重合。
非常感谢任何知识!
答案 0 :(得分:3)
留出一些我们拥有的东西
function (self, $, undefined) {
// ...
}
所以,基本上,一个函数(虽然名称缺失)。现在这包含在
中(/* above code here */)(...);
这是所谓的 IIFE (立即调用的函数表达式)。换句话说:创建并立即调用该函数。这样做的原因是它创建了一个可以拥有“私有”变量的范围。此外,jQuery
会在该范围内为$
添加别名,以便于参考。同样,This.IsTheNameOf.MyJsFile
会将别名变为self
。
如果仔细观察,该函数需要三个参数,但只能用两个参数调用。这会强制最后一个参数为(本机)undefined
,这恰好是IIFE内该参数的名称。这可以确保该范围内的undefined
具有预期值(允许旧版浏览器覆盖它)。