在用户取消时显示提示,它会出现未捕获的类型错误
show prompt while the user cancels, it gets uncaught typeError
我声明了一个名为init()
的函数,它询问用户游戏大小,由space分隔。我想在用户未单击 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];
当我测试上面的代码时,在我点击取消后,它可以正常工作并再次显示提示,但问题是它给我以下错误。
Uncaught TypeError: Cannot read property '0' of undefined in line rows = gameSize[0]
可能是因为当您尝试访问它时 gameSize 尚未定义。
尝试在 rows 和 cols
之前声明 gameSize 变量
var gameSize = init();
var rows = gameSize[0],
cols = gameSize[1];
当您调用 gameSize = init()
时,它会运行 init() 函数,如果用户点击取消,该函数将 return undefined
因为您没有声明 return
该代码路径中的语句。
然后当您执行 var rows = gameSize[0]
时,gameSize
在那个时候是 undefined
并导致您看到的错误。
您需要做的是 return 下一次调用 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];
我声明了一个名为init()
的函数,它询问用户游戏大小,由space分隔。我想在用户未单击 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];
当我测试上面的代码时,在我点击取消后,它可以正常工作并再次显示提示,但问题是它给我以下错误。
Uncaught TypeError: Cannot read property '0' of undefined in line
rows = gameSize[0]
可能是因为当您尝试访问它时 gameSize 尚未定义。 尝试在 rows 和 cols
之前声明 gameSize 变量var gameSize = init();
var rows = gameSize[0],
cols = gameSize[1];
当您调用 gameSize = init()
时,它会运行 init() 函数,如果用户点击取消,该函数将 return undefined
因为您没有声明 return
该代码路径中的语句。
然后当您执行 var rows = gameSize[0]
时,gameSize
在那个时候是 undefined
并导致您看到的错误。
您需要做的是 return 下一次调用 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];