Вопрос по операторам JavaScript

Рейтинг: 2Ответов: 1Опубликовано: 07.12.2014

Разбираюсь с чужим JavaScript кодом. Не могу понять, что значит фраза:

this.currency = function(){return this.foo() == "rur" && "р." || "$"};

Для меня как сишарпера это неправильное выражение, но что-то мне подсказывает, что оно означает следующее: если верно выражение this.foo() == "rur", то вернуть "р." иначе "$". Верно ли мое предположение и где почитать о подобном?

Ответы

▲ 4Принят

Правильно думаете, читайте доки:

Однако, в javascript операторы && и || возвращают не булево значение, а один из операндов, определивший значение выражения. Конечно, результат в таком случае может быть и не булевым.

Т.е. return true && 'asd' вернет 'asd' именно потому, что от него зависит, чему будет равно выражение. Поэтому в функциях можно использовать следующее:

function func(param) {
    param = param || 'default_value';
    return param;
}
var result = func();
console.log(result); // default_value