我发现JQuery网站上的代码构造未知。经过一些格式化后,它看起来像:
function (a,c) {
c==null && (c=a,a=null);
return arguments.length>0
? this.bind(b,a,c)
: this.trigger(b)
}
该功能的第一行是什么意思?是任何技巧或标准的JS代码构造吗?
答案 0 :(得分:15)
这是一个使用布尔短路评估的技巧,如果第一个评估为真,则仅执行后半部分。 Perl通常有这个:
<something> or die
如果第一个语句失败,则程序结束。
将其读作
if (c == null) { c = a; a = null; }
答案 1 :(得分:12)
这是一种难看的写作方式
if(c==null) {
c = a;
a = null;
}
这利用了以下事实:当且仅当第一部分的计算结果为真时,才会执行布尔&&
的第二部分。
答案 2 :(得分:2)
该表达式使用两个JavaScript功能:
a && (b);
相当于if (a) (b);
a=b,b=c;
相当于{ a=b; b=c }
结果表达式相当于:
if (c == null) {
c = a
a = null
}