Что за странный синтаксис?

Я нашел неизвестный для меня код конструкции на сайте JQuery. После некоторого форматирования это выглядит так:

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

Что означает первая строка функции? Это какой-то трюк или стандартная конструкция кода JS?

3 ответа

Решение

Это трюк, который использует булево вычисление короткого замыкания для выполнения второй половины, только если первая оценка имеет значение true. Perl имеет это обычно:

<something> or die

где, если первый оператор потерпел неудачу, программа заканчивается.

Прочитайте это как

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

Это ужасный способ написать

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

Это использует тот факт, что вторая часть логического && будет выполнено, если и только если первая часть оценивается как true.

В выражении используются две функции JavaScript:

В результате выражение эквивалентно:

if (c == null) {
    c = a
    a = null
}
Другие вопросы по тегам