Есть кусок кода
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);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости