jquery文件内部引发错误-奇怪的语法

Error thrown inside jquery file - odd syntax

本文关键字:语法 错误 文件 内部 jquery      更新时间:2023-09-26

我的网页出现错误,我得到了以下代码(在jquery.js文件中):

trigger: function() {
  return this !== _() && this.focus ? (this.focus(), !1) : void 0
}

(this.focus(), !1)部分是什么意思。这可能吗?据我所知,一个函数只能返回一个值。

该部分专门执行this.focus(),然后返回false。逗号在移动到下一个语句之前完成一个语句,括号中包含语句以防止出现任何其他语法错误。

语法非常奇怪,但最可能的原因是缩小。最初的代码看起来很可能是这样的:

trigger: function () {
    if (this !== _() && this.focus) {
        this.focus();
        return false;
    }
}

如果没有指定其他内容,JavaScript将返回undefined(而void 0只是一种较短的编写方式),因此函数可以扩展为以下内容:

trigger: function () {
    if (this !== _() && this.focus) {
        this.focus();
        return false;
    }
    return undefined;
}

为了减少字节数,minifier将两个return语句合并为一个语句。正如您从代码中看到的,如果满足某些条件并且在执行了this.focus()之后,单个return语句将必须返回false,如果不满足这些条件,则返回undefined。这就是您查询的语句的作用。