Когда я JSLint этот код:Почему JSLint говорит, что «анонимная функция не всегда возвращает значение» для обработчика события?
$(document).keydown(function(e){
if ($("#chaptersFunctionality").length !== 0) {
if (e.keyCode == '13')
return false;
if ($("#kelvin").val() === "" && $("#caleb").attr("title") === "Show all steps") {
switch(e.which){
case 39: if ((parseInt(currentAnchor)+1) < parseInt(maxi))
expandMe(++currentAnchor);
break;
case 37: if (currentAnchor > 0)
expandMe(currentAnchor-1);
break;
}
}
}
});
... Я получаю много предупреждений, большинство из которых я ГРОК, но это один имеет меня в тупик: «анонимная функция не всегда возвращает значение»
Почему это так? Обработчик событий не является анонимной функцией, не так ли? И все равно это не возвращает никакой ценности, не так ли? Итак, что это значит и что будет [moll, pac] ify linter?
Обработчик событий - это функция. Эта функция может быть анонимной (и находится в вашем примере кода). Обработчик событий также может вернуть значение (и делает это в вашем примере кода, см. Строку «return false»). Однако, если первая внутренняя ветвь 'if' не будет принята, то оператор' return' не будет выполнен, и ваш обработчик по умолчанию будет возвращать 'undefined'. Похоже, JSLint этого не ценит. –