let loop = function(times = 0, callback = null) {
for (let i = 1; i <= times; i++) {
// if (callback == null) {
// clear();
// }
callback(i);
console.log(i);
}
}
function show(par) {
console.log('massage ' + par);
}
function clear(par) {
// console.log('...' + par);
}
loop(3, show);
// loop(3);
Почему нельзя сравнивать callback с null? Отладчик ругается:
Uncaught TypeError: callback is not a function
когда не передаю второй аргумент (то есть callback == null).
Потому что вы пытаетесь вызвать callback(i);
в той ситуации, когда у вас callback = null
. Вот он и пишет что это не функция.
Я не знаю что вы хотите получить, но в таких ситуациях обычно делается проверка на null перед вызовом. И вызов делается только на не null функцию.
Сравнить можно. Только вызывать/не вызывать ее надо в зависимости от результата сравнения.
if (callback == null) {
...
} else { // !!!
callback(i);
}
или
if (callback != null) {
callback(i);
}
или
let loop = function(times = 0, callback = null) {
if (callback == null)
return;
for (let i = 1; i <= times; i++) {
// ...
}
}
Тут проблема не в проверке на null, а в том, что если callback
равен null, то цикл не заканчивается и продолжает отрабатывать дальше, то есть пытаются выполниться строки
callback(i);
console.log(i);
что конечно же невозможно. Вот и ругается, что callback
не является функцией.
В итоге, нужно, если callback == null
либо делать break;
, либо continue;
, в зависимости от логики
либо if {} else {}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте! Нужно, чтобы при нажатии на ссылку подгружался файл JSONПри проверке через консоль без события Click все работает:
Ошибка, которую сложно отловитьЕсли оставить вкладку с данным слайдером открытой, заниматься своими делами в браузере, а затем вернуться,...
Добрый день! Недавно начал изучать ларавел и возникла проблема (в интернете ничего подобного не нашел либо не правильно составлял запрос)...