Javascript无法识别的语法

Javascript Unrecognized Syntax

本文关键字:语法 识别 Javascript      更新时间:2023-12-29

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

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

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

任何知识都将不胜感激!

去掉一些东西,我们有

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

所以,基本上是一个函数(尽管缺少一个名称)。现在这个包裹在中

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

这就是所谓的IIFE(立即调用函数表达式)。换句话说:函数被创建并立即调用。这样做的原因是它创建了一个范围,您可以在其中拥有"私有"变量。此外,为了便于参考,jQuery在该范围内被别名为$。类似地,This.IsTheNameOf.MyJsFile被混叠为self

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