多么奇怪的语法?

时间:2011-07-26 12:04:52

标签: javascript

我发现JQuery网站上的代码构造未知。经过一些格式化后,它看起来像:

function (a,c) {
    c==null && (c=a,a=null);
    return arguments.length>0
        ? this.bind(b,a,c) 
        : this.trigger(b)
}

该功能的第一行是什么意思?是任何技巧或标准的JS代码构造吗?

3 个答案:

答案 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功能:

结果表达式相当于:

if (c == null) {
    c = a
    a = null
}