我正在尝试使用函数将输入更改为参数中设置的内容。检查在确定输入是否正确但不改变原始输入时工作正常。我觉得这是我想念的小事,有人能帮忙吗? 这是我的代码:
var x = prompt("enter number");
var y = prompt("enter number");
function isThisRowNumberCorrect(number1){
if (isNaN(number1) === true){
alert("Please choose a row number between 0 and 5!");
number1 = prompt("Please choose a row number between 0 and 5.")-'';
}
if (number1 > 5){
alert("Please choose a row number between 0 and 5!");
number1 = prompt("Please choose a row number between 0 and 5.")-'';
}
if (number1 < 0){
alert("Please choose a row number between 0 and 5!");
number1 = prompt("Please choose a row number between 0 and 5.")-'';
}
number1 = number1;
}
function isThisColumnNumberCorrect(number2){
if (isNaN(number2) === true){
alert("Please choose a column number between 0 and 5!");
number2 = prompt("Please choose a column number between 0 and 5.")-'';
}
if (number2 > 5){
alert("Please choose a column number between 0 and 5!");
number2 = prompt("Please choose a column number between 0 and 5.")-'';
}
if (number2 < 0){
alert("Please choose a column number between 0 and 5!");
number2 = prompt("Please choose a column number between 0 and 5.")-'';
}
number2 = number2;
}
isThisRowNumberCorrect(x);
isThisColumnNumberCorrect(y);
console.log(x + "" + y);
答案 0 :(得分:2)
这两个函数的参数是原始类型。传入函数时,JavaScript引擎将创建原始参数的新副本。因此,在函数number2 = number2;
中设置值不会更改外部值。
您需要从函数isThisRowNumberCorrect
中返回新值:
return number1;
并调用函数:
x = isThisRowNumberCorrect(x);
答案 1 :(得分:0)
您正在将函数的结果重新分配给函数中的变量,然后可能会错过条件。此外,您的功能不会返回任何内容。他们只是创建一个全局变量。您的编辑器应该有一个温和的警告,用于将参数赋值给具有相同名称的变量。虽然我建议不要使用prompt
和alert
,但您可能希望代码看起来像:
function promptRowExample(){
var p = prompt('Please Choose a Row Between 0 and 5.');
if(p < 0 || p > 5 || isNaN(p)){
return promptRowExample();
}
return 'The Number '+p+' is a Valid Number!';
}
console.log(promptRowExample());