На итерации тест пройден успешно, поэтому вы делаете:
m = s[i];
, что эквивалентно:
m = "hello";
На второй итерации вы тестируете:
if (s[i].length > m)
, что эквивалентно:
if (4 > "hello")
Поскольку вы сравниваете объекты разных типов, он преобразует их в общий тип; в этом случае он пытается преобразовать строку в число. Поскольку строка не является числовой, она преобразуется в NaN
, и любое сравнение с NaN
всегда возвращает false
.
Вам нужны две переменные, одна для текущей максимальной длины, а другая для самой длинной строки.
var a = "hello asdf asdf sdfgfghkkjb";
var s = a.split(" ");
var m = -Infinity; // maximum length
var ms; // longest string
for (var i = 0; i < s.length; i++) {
if (s[i].length > m) {
ms = s[i];
m = ms.length;
}
}
console.log(ms)