javascript - 在用户取消时显示提示,它得到未捕获的 typeError
问题描述
我已经声明了一个名为 的函数init()
,它询问用户游戏大小,由空格分隔。我想在用户不点击时显示提示ok
并且像取消一样(显式单击取消或隐式按下esc
键盘)。
这是我已经实现的:
function init(){
let promptMessage = 'تعداد سطرها و ستونهای جدول را به ترتیب وارد کرده و با فاصله از هم جدا کنید\nمثلا مقدار پیشفرض دارای 7 جدول و 6 ستون است';
let promptDefault = '7 6';
let prompt = this.prompt(promptMessage, promptDefault);
if (prompt) {
prompt = prompt.split(" ")
console.log(prompt);
prompt[0] = Number(prompt[0]);
prompt[1] = Number(prompt[1]);
return prompt;
}
init()
}
var gameSize = init(),
rows = gameSize[0],
cols = gameSize[1];
当我测试上面的代码时,单击取消后,它可以正常工作并再次显示提示,但问题是它给了我以下错误。
未捕获的类型错误:无法读取行中未定义的属性“0”
rows = gameSize[0]
解决方案
当您调用gameSize = init()
它时,它会运行 init() 函数,如果用户点击取消,该函数将返回undefined
,因为您没有return
在该代码路径中声明语句。
然后,当您执行var rows = gameSize[0]
,gameSize
时undefined
,会导致您看到的错误。
您需要做的是返回下一次调用的结果init()
。
function init(){
let promptMessage = 'تعداد سطرها و ستونهای جدول را به ترتیب وارد کرده و با فاصله از هم جدا کنید\nمثلا مقدار پیشفرض دارای 7 جدول و 6 ستون است';
let promptDefault = '7 6';
let prompt = this.prompt(promptMessage, promptDefault);
if (prompt) {
prompt = prompt.split(" ")
console.log(prompt);
prompt[0] = Number(prompt[0]);
prompt[1] = Number(prompt[1]);
return prompt;
}
return init();
}
var gameSize = init(),
rows = gameSize[0],
cols = gameSize[1];
推荐阅读
- javascript - 如何在 JavaScript 中将 id 从另一个 const 传递给另一个 const?
- python - 从熊猫系列列表中删除换行符
- excel - 如何通过 VBA 应用特定的 Word 邮件合并列过滤器
- flutter - 将flutter升级到^2.0.0后auto_route包出现问题
- javascript - 从其他页面获取 HTML 并使用“type='module'”附加脚本后,它只工作一次然后停止
- java - 如何从 ldap 解密 wcrypt 数据?
- json - Json 序列化问题(奇数字符)
- java - Spring JPA - 如何计算外键的数量
- javascript - 初始化 server.js,然后在 HTML 页面中调用 Javascript 文件中的函数
- java - 如何读取 CSV 文件,按特定记录过滤并根据记录将其存储在不同的 java 对象中