我的网页出错了,我登陆了以下代码(在jquery .js文件中):
trigger: function() {
return this !== _() && this.focus ? (this.focus(), !1) : void 0
}
(this.focus(), !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
满足。这就是你所查询的陈述。