Есть кусок кода
var someWords = ["clear", "business", "entertainment"];
function pickWord(someWords) {
return someWords[Math.floor(Math.random() * someWords.length)];
}
Интерпретатор выдает
cannot read property length of undefined
Но как же ундефайнд если я даже имя аргумента переименовал по уже объявленной переменной??
в данном случае имя параметра совпадает с именем глобальной переменной и перекрывает его внутри функции.
Чтобы не путаться с этим, можно переименовать параметр и получить следующее
var someWords = ["clear", "business", "entertainment"];
function pickWord(words) {
return words[Math.floor(Math.random() * words.length)];
}
Таким образом, значение параметра someWords определяется тем, с каким параметром была вызвана функция pickWord
.
Если функция была вызвана без параметров: pickWord()
то значение всех объявленных параметров функции будет undefined.
Для решения необходимо либо передавать глобальную переменную в функцию
var someWords = ["clear", "business", "entertainment"];
function pickWord(words) {
return words[Math.floor(Math.random() * words.length)];
}
pickWord(someWords);
Либо убрать параметр
var someWords = ["clear", "business", "entertainment"];
function pickWord() {
return someWords[Math.floor(Math.random() * someWords.length)];
}
pickWord();
В данном случае будет использована глобальная переменная.
Не договариваете Вы чего-то. Все работает
var someWords = ["clear", "business", "entertainment"];
function pickWord(someWords) {
return someWords[Math.floor(Math.random() * someWords.length)];
}
var word = pickWord(someWords);
console.log(word);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
И ещёНасколько сложно учить JavaScript: легко, средне или вообще сложно?