#javascript #arrays #return #console.log
#javascript #массивы #Возврат #console.log
Вопрос:
Я хочу вернуть количество истинных значений в приведенном ниже массиве.
const array = [1,2,3,'',2];
function countTruthy (array) {
let numberCount = 0;
for (let item of array)
console.log(item)
if (item) numberCount ;
return numberCount;
Но это работает только после удаления этой строки.
console.log(item)
В противном случае я получаю: Неперехваченная ошибка ссылки: элемент не определен
в countTruthy?
Почему?
Бонусный вопрос — независимо от того, как мой оператор return имеет отступ, я получаю тот же результат обратно… но должен ли он быть в «if statement» или «for loop»? Почему?
Комментарии:
1. начните с массива регистрации консоли и numberCount и посмотрите, каково их значение. Вы не можете устранить неполадки, если не видите все свои данные. Никогда не предполагайте, что что-то работает, всегда проверяйте свои предположения. Мы не можем устранить неполадки с элементом, пока не узнаем, как выглядят окружающие данные
2. вам нужно проверить свои фигурные скобки
3. Вам нужны фигурные скобки для вашего оператора «for»; это после
(let item of array)
. Вам также не хватает точки с запятой для вашего console.log (то есть, если это имеет значение в вашей среде).
Ответ №1:
Кажется, вам не хватает некоторой области видимости (т.Е. «{ }»). В вашей текущей реализации оператор for будет выполнять только console.log
вот почему, если вы удалите его, он выполнит if(item)...
и все работы
попробуйте
for (let item of array) {
console.log(item);
if (item) {
numberCount ;
}
}
return numberCount;
Важно отметить, что Javascript не является «позиционным» языком, поэтому независимо от того, как вы вводите отступ в код, он будет выполняться одинаково, важны скобки.
Ответ №2:
Я надеюсь, что это будет полезно для вас:
Когда вы не используете фигурные скобки ‘{}’ в «for», любом цикле или условии, для этого процесса берется только следующая строка. В вашем случае, если вы удалите журнал, элемент распознается по значку «for», но если вы добавите журнал в следующую строку, поскольку в нем нет ключей «{}», «for» работает только со следующей строкой, и элемент больше не принадлежит к»для», поэтому он больше не распознается, и вам придется объявить его вне «для»
const array = [1,2,3,'',2];
function countTruthy (array) {
let numberCount = 0;
for (let item of array)
{
console.log(item);
if (item) numberCount ;
}
return numberCount;
}
countTruthy(array);
Ответ №3:
Похоже, это проблема с отступом. Используйте скобки, чтобы закрыть функцию и цикл for, подобный этому:
const array = [1,2,3,'',2];
function countTruthy (array) {
let numberCount = 0;
for (let item of array) {
console.log(item)
if (item) numberCount ;
}
return numberCount;
}