繁体   English   中英

JavaScript函数返回“未定义”

[英]JavaScript function returning “undefined”

我编写了一个简单的代码,使用“ random_word();”从四个随机名称中选择一个。 功能,它不起作用。 它说:“未定义”。 谁能解释我的原因并帮助解决它? 感谢所有帮助。

var randomWord;

var word = new Array(3);
word[0] = "Michael";
word[1] = "Simon";
word[2] = "Peter";
word[3] = "Mark";

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

random_word();

document.write(randomWord);

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

 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> 

random_word函数上下文中的局部变量randomWord与在外部上下文中声明的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();

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

使用此代替:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM