Что означают эти выражения javascript? - PullRequest
0 голосов
/ 08 сентября 2011

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

function sort(b) {
            for (var d = [], c = 0; c < this.gs.length; c++) for (var g = 0; g < this.gs[c].length; g++) d.push(this.gs[c][g]);
            b && d.reverse();
            return d
}

Я предполагаю, что эта функция сортировки принимает либо неопределенный, либо некоторый параметр для b, и возвращает 2d массив.

Что означает b && d.reverse ()?Означает ли это, что если b имеет значение, обратное d?

Другое выражение:

b = this.sort(g == "left" || g == "top");

Что это значит?

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Что означает b && d.reverse()? Означает ли это, что b имеет значение, обратное d?

Правильно. Это умная задница версия написания

if (b) d.reverse();

reverse() - операция на месте, поэтому она меняет массив, с которым работает (следовательно, код не заботится о своем возвращаемом значении здесь).

Другое утверждение работает аналогично:

b = this.sort(g == "left" || g == "top");

Оценка начинается с g == "left" || g == "top". Это дает true или false в зависимости от значения g. Результат передается в sort(), возвращаемое значение которого затем сохраняется в b.

0 голосов
/ 08 сентября 2011

b && d.reverse () означает, что если b не равно false, равно null, undefined или 0, то выполняется d.reverse ().Другими словами: если мы не передаем аргумент (b) для функции или передаем false / 0, то d.reverse () не выполняется.

Второе выражение просто передает либо true, либоfalse для метода sort ().Это просто нормальная операция ИЛИ, где g должно быть «слева» или «сверху».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...