JavaScript函数返回" undefined"

时间:2016-11-29 21:08:18

标签: javascript

我写了一个简单的代码来选择四个随机名称,使用" random_word();"功能,它不起作用。它说:" undefined"。任何人都可以解释我为什么并帮助解决它?感谢您的帮助。

.fadeOut()

3 个答案:

答案 0 :(得分:3)

使用randomWord语句将var设置为函数的私有变量。如果没有,您可以使用全局变量作为结果。

function random_word() {
    randomWord = word[Math.floor(Math.random() * word.length)];
}

var randomWord;
    word = ["Michael", "Simon", "Peter", "Mark"];

random_word();
document.write(randomWord);

更好的风格和更简洁的是所选项目的返回。一个更好的版本,如果您也将数组用作参数,因为您也可以将该函数用于其他数组。

function getRandomItem(array) {
    return array[Math.floor(Math.random() * array.length)];
}

var words = ["Michael", "Simon", "Peter", "Mark"];

document.write(getRandomItem(words));

奖金,添加间隔随机名称。

function getRandomItem(array) {
    return array[Math.floor(Math.random() * array.length)];
}

var words = ["Michael", "Simon", "Peter", "Mark"];

setInterval(function () {
    document.getElementById('names').innerHTML += getRandomItem(words) + '<br>';
}, 2000);
<div id="names"></div>

答案 1 :(得分:3)

randomWord函数上下文中的局部变量random_word与外部上下文中声明的randomWord无关。如果要重置外部上下文randomWord变量的值,则应在函数中删除var关键字。

function random_word(){
    randomWord = word[Math.floor(Math.random()*word.length)]
}

但这不是一种好的编程方式。理想情况下,函数应返回一个值。

function random_word(){
  return word[Math.floor(Math.random()*word.length)];
}

var randomWord = random_word();
var anotherRandomWord = random_word();

答案 2 :(得分:0)

您在函数中使用var关键字创建局部变量。当您退出该功能时,不会设置全局功能。

请改用:

function random_word(){  
    randomWord = word[Math.floor(Math.random()*word.length)]
}