Есть код для смены раскладки с латинской на кириллическую.
Вопрос стандартный для js: почему он работает?
Интересует строка
str_out += map[str_in.charAt(i)] || str_in.charAt(i);
Выражение
map[str_in.charAt(i)] || str_in.charAt(i) последней по приоритету выполняет операцию
логического ИЛИ,
соответственно возвращаемый результат должен быть
логического типа, а именно true или false.
Почему он возвращает символ?
Сам код:
var map = {
'q' : 'й', 'w' : 'ц', 'e' : 'у', 'r' : 'к', 't' : 'е', 'y' : 'н', 'u' : 'г', 'i' : 'ш', 'o' : 'щ', 'p' : 'з', '[' : 'х', ']' : 'ъ',
'a' : 'ф', 's' : 'ы', 'd' : 'в', 'f' : 'а', 'g' : 'п', 'h' : 'р', 'j' : 'о', 'k' : 'л', 'l' : 'д', ';' : 'ж', '\'' : 'э',
'z' : 'я', 'x' : 'ч', 'c' : 'с', 'v' : 'м', 'b' : 'и', 'n' : 'т', 'm' : 'ь', ',' : 'б', '.' : 'ю',
'Q' : 'Й', 'W' : 'Ц', 'E' : 'У', 'R' : 'К', 'T' : 'Е', 'Y' : 'Н', 'U' : 'Г', 'I' : 'Ш', 'O' : 'Щ', 'P' : 'З', '[' : 'Х', ']' : 'Ъ',
'A' : 'Ф', 'S' : 'Ы', 'D' : 'В', 'F' : 'А', 'G' : 'П', 'H' : 'Р', 'J' : 'О', 'K' : 'Л', 'L' : 'Д', ';' : 'Ж', '\'' : 'Э',
'Z' : '?', 'X' : 'ч', 'C' : 'С', 'V' : 'М', 'B' : 'И', 'N' : 'Т', 'M' : 'Ь', ',' : 'Б', '.' : 'Ю'
};
function replaceEnChr(input){
var str_in = $(input).val();
var str_out = '';
for (var i = 0; i < str_in.length; i++) {
str_out += map[str_in.charAt(i)] || str_in.charAt(i);
};
return str_out;
};