Почему я не могу получить доступ к этой функции? - PullRequest
0 голосов
/ 02 октября 2019

В настоящее время я работаю через кодовые войны, и мне кажется, что я снова и снова сталкиваюсь с одной и той же проблемой, я не могу вернуть внутреннюю функциональность. Ниже приведен текущий пример, но это происходит каждый раз, когда я что-то пробую.

Поставленный вопрос:

Рассмотрим массив овец, у которых некоторые овцы могут отсутствовать на своем месте. Нам нужна функция, которая подсчитывает количество овец, присутствующих в массиве (истинное означает, что присутствует).

Например,

arrayOfSheep = [true,  true,  true,  false,
  true,  true,  true,  true ,
  true,  false, true,  false,
  true,  false, false, true ,
  true,  true,  true,  true ,
  false, false, true,  true];

Так что я работаю глобально, как показано ниже:

let count = [];

for(let i = 0 ; i < arrayOfSheep.length ; i++) {
  if(arrayOfSheep[i] == true) {
    count ++;
  }
}
console.log(count); 

, который возвращает 17 в терминале;количество экземпляров true в пределах arrayOfSheep. Отлично.

Я знаю, что для возврата функциональности я должен использовать ключевое слово return.

Это код, который ничего не генерирует для терминала:

function countSheeps(arrayOfSheep) {
  let count = [];
  for(i = 0 ; i < arrayOfSheep.length ; i ++) {
    if(arrayOfSheep[i] == true) {
     return count ++;
    }
  }
};

console.log(count);

он должен просто вернуть целое число 17. Но вместо этого я получаю сообщение об ошибке

ReferenceError: count не определено

Что действительно очевидного, что я пропускаю, Я ЗНАЮ, что собираюсь пнуть себя, когда кто-толюбезно указать это ...

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

Let is переменная области видимости блока Переменные, объявленные с ключевым словом let, могут иметь область действия блока.

Переменные, объявленные внутри блока {}, недоступны извне блока, если вы хотите использовать счетчик извне, объявите егокак глобальный

arrayOfSheep = [true,  true,  true,  false,
 true,  true,  true,  true ,
 true,  false, true,  false,
true,  false, false, true ,
true,  true,  true,  true ,
false, false, true,  true];
function countSheeps(arrayOfSheep) {
    let count = [];
     for(i = 0 ; i < arrayOfSheep.length ; i ++) {
       if(arrayOfSheep[i] == true) {
        return count ++;
       }
     }
   console.log(count);
   };
0 голосов
/ 02 октября 2019
  1. Переменная count является определенной внутри функции countSheeps, поэтому она недоступна вне этой функции. Кроме того, вы не вызывали функцию в своем примере кода.

  2. Вы должны увеличить count вместо его возврата, поскольку цикл for ничего не возвращает.

  3. Функция может возвращать некоторыеценности. Мы возвращаем окончательный вывод переменной count здесь, чтобы она могла отображаться в console.log().

const arrayOfSheep = [
  true,
  true,
  true,
  false,
  true,
  true,
  true,
  true,
  true,
  false,
  true,
  false,
  true,
  false,
  false,
  true,
  true,
  true,
  true,
  true,
  false,
  false,
  true,
  true
];

function countSheeps(arrayOfSheep) {
  let count = 0;
  for (i = 0; i < arrayOfSheep.length; i++) {
    if (arrayOfSheep[i] == true) {
      count++;
    }
  }

  return count;
}

console.log(countSheeps(arrayOfSheep));
...