我在 JQuery 网站上发现了一种我不熟悉的代码结构。经过一些格式化处理后,它看起来像是:
function (a,c) {
c==null && (c=a,a=null);
return arguments.length>0
? this.bind(b,a,c)
: this.trigger(b)
}
这个函数的第一行是什么意思?它是任何技巧还是标准的JS代码结构?
我在 JQuery 网站上发现了一种我不熟悉的代码结构。经过一些格式化处理后,它看起来像是:
function (a,c) {
c==null && (c=a,a=null);
return arguments.length>0
? this.bind(b,a,c)
: this.trigger(b)
}
这个函数的第一行是什么意思?它是任何技巧还是标准的JS代码结构?
这是一种使用布尔短路运算的技巧,只有在第一个条件为真时才执行第二个条件。Perl中经常使用此方法:
<something> or die
如果第一条语句失败,程序将会终止。
理解为
if (c == null) { c = a; a = null; }
A or B
作为类似于A!= null && A == true? A:B
的等效方式。虽然在Python中,您可以这样说:A if A != None and A == True else B
。也许我错过了Python用法的一些微妙之处。 - JAB那是一种丑陋的写法
if(c==null) {
c = a;
a = null;
}
这利用了布尔运算符&&
的特性:只有当第一个条件为真时,第二个条件才会被执行。