在jquery文件中抛出错误 - 奇怪的语法

时间:2015-11-27 15:49:21

标签: javascript jquery

我的网页出错了,我登陆了以下代码(在jquery .js文件中):

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

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

1 个答案:

答案 0 :(得分:2)

该部分专门执行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语句合并为一个语句。正如您从代码中看到的那样,如果满足某些条件且return执行完毕后,单false个语句必须返回this.focus(),如果条件不满,则必须返回undefined满足。这就是你所查询的陈述。