函数不更改输入的Javascript问题

时间:2015-09-01 00:25:14

标签: javascript function

我正在尝试使用函数将输入更改为参数中设置的内容。检查在确定输入是否正确但不改变原始输入时工作正常。我觉得这是我想念的小事,有人能帮忙吗? 这是我的代码:

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);

2 个答案:

答案 0 :(得分:2)

这两个函数的参数是原始类型。传入函数时,JavaScript引擎将创建原始参数的新副本。因此,在函数number2 = number2;中设置值不会更改外部值。

您需要从函数isThisRowNumberCorrect中返回新值:

return number1;

并调用函数:

x = isThisRowNumberCorrect(x);

答案 1 :(得分:0)

您正在将函数的结果重新分配给函数中的变量,然后可能会错过条件。此外,您的功能不会返回任何内容。他们只是创建一个全局变量。您的编辑器应该有一个温和的警告,用于将参数赋值给具有相同名称的变量。虽然我建议不要使用promptalert,但您可能希望代码看起来像:

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());