多么奇怪的语法?

问题描述 投票:0回答:3

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

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

函数第一行是什么意思?这是什么技巧还是标准的 JS 代码构造?

javascript operators
3个回答
14
投票

这是一个技巧,它使用布尔短路评估,仅在第一个评估结果为 true 时才执行后半部分。 Perl 常见的有这个:

<something> or die

如果第一条语句失败,程序就会结束。

读作

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

11
投票

这是一种丑陋的写作方式

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

这利用了这样一个事实:当且仅当第一部分计算结果为 true 时,才会执行布尔值

&&
的第二部分。


2
投票

该表达式使用了两个 JavaScript 功能:

因此,表达式相当于:

if (c == null) {
    c = a
    a = null
}
© www.soinside.com 2019 - 2024. All rights reserved.