Пошагово разбить его, чтобы сделать более понятным:
o[arr[i]] = o[arr[i]] || {};
- это то же самое, что:
var x = arr[i];
o[x] = o[x] || {};
- это то же самое, что:
var x = arr[i];
if (o[x] == undefined) {
o[x] = {};
}
Схема A = B || DEFAULT_VALUE
- это идиома, в которой используется оператор короткого замыкания ||
.В javascript оператор ||
не возвращает true
или false
, но вместо этого возвращает первое не ложное значение или false
.Таким образом, если первая переменная не ложная, она оценивается как значение первой переменной, в противном случае она оценивается как значение второй переменной.