Ниже я поставил вопрос и два ответа. Логика ответов представляется мне одинаковой, но решение A работает, а решение B возвращает «false», если «x» не является первой буквой строки. Почему это?Разница между двумя операциями 'if' и контуром 'if/else'
Вопрос:
Напишите функцию с именем hasX(). Он должен принимать в качестве ввода строку, и она должна возвращать значение true, если строка содержит символ «x», а false - если нет.
Раствор А:
function hasX(s) {
for (var i = 0; i < s.length; i++)
if (s[i] === 'x') {
return true;
} if (s[i] !== 'x') {
return false;
}
}
hasX('I play the xylophone');
// returns true
Раствор Б:
function hasX(s) {
for (var i = 0; i < s.length; i++)
if (s[i] === 'x') {
return true;
} else {
return false;
}
}
hasX('I play the xylophone');
// returns false
В этой ситуации нет никакой разницы. Даже количество циклов процессора. Таким образом, в приведенном выше примере я бы использовал решение B, так как более ясно, что это if if else – abc123
Отсутствующие фигурные скобки вокруг цикла for изменяют поведение, которое вводит в заблуждение. – zzzzBov