在调用相同函数时返回undefined

时间:2014-03-04 08:05:33

标签: javascript jquery

这是我的代码

function secondval_prompt(firstval) {
  var secondval = prompt("should be greater than 1st value");
  if((secondval > firstval) && (secondval != "") && (!isNaN(secondval))) {
    return secondval;
  } else {
    secondval_prompt(firstval);
  }
}

var firstvalue = prompt("Enter 1st value");
var secondvalue = secondval_prompt(firstvalue);
alert(secondvalue);

如果我第一次给second value first value更大的second value,则正确地返回second value。一旦我将first value作为错误(少于first value })第一次并在第二次返回undefined时给出了正确的值(大于undefined} ...

为什么它会在second上返回100尝试..

演示链接:http://jsbin.com/balufete/1/edit?js,output

请尝试这样

第一

将第一个值设为101& 将第二个值设为101 它将返回100

第二

将第一个值设为10& 将第二个值设为101& 再次给出undefined的第二个值 它将返回{{1}}

1 个答案:

答案 0 :(得分:4)

您还需要return递归函数的值。

return secondval_prompt(firstval);

请注意,您当前正在对提示中输入的 text 值进行比较。由于各自的字母顺序,"5"将被视为高于"10"。您可能希望parseInt两个输入:

if(parseInt(secondval, 10) > parseInt(firstval, 10))

您还应该将firstval同样的有效性测试应用于secondval。目前,您的代码将接受firstval的非数字值。