调用getComputerChoice()函数时出现TypeError:无法读取undefined的length属性
问题分析与解决
错误原因
你定义getComputerChoice函数时声明了参数options,这个参数会覆盖全局作用域的同名变量。当你调用getComputerChoice()时没有传入任何参数,函数内部的options就变成了undefined,因此无法读取它的length属性,触发了TypeError。
解决方法
有两种可行的修复方式:
方式1:移除函数的options参数
让函数直接使用全局作用域的options数组:
var options = ["rock", "paper", "scissor"]; function getComputerChoice() { let choice = options[Math.floor(Math.random() * options.length)]; console.log(choice); } getComputerChoice();
方式2:调用函数时传入全局数组
保持函数参数不变,调用时把全局的options传进去:
var options = ["rock", "paper", "scissor"]; function getComputerChoice(options) { let choice = options[Math.floor(Math.random() * options.length)]; console.log(choice); } getComputerChoice(options);
小建议
另外,单词scissor的正确复数形式是scissors,虽然这不是当前错误的原因,但修正后更符合英语表达习惯。
内容的提问来源于stack exchange,提问作者Rajnish Singh
相关产品推荐
相关产品推荐

