(JavaScript)具有==的Compare函数始终返回false

时间:2019-05-31 12:02:52

标签: javascript

我制作了函数,接受用户输入,如果数字相同则输出为true,否则为false。现在,我的应用程序始终将其输出为false。抱歉,如果这是错误的代码,我是菜鸟。

我尝试将“ == NaN”替换为“ <0”,但没有成功。

function compare(a, b) {
  if (a == b) {
    var valid = true;
  } else {
    var valid = false;
  }
  return valid;
}

function test(first, second) {
  if (!isNaN(first) && !isNaN(second)) {
    alert(compare(first, second));
  } else {
    alert('TRY AGAIN');
  }
}


var firstStr = prompt('Enter first Number:');
var first = new Number(firstStr);

var secondStr = prompt('Enter second Number:');
var second = new Number(secondStr);

test(first, second);

我没有收到任何错误消息,但是我总是将其卡在false上,如果我的代码还有其他问题,请告诉我。

3 个答案:

答案 0 :(得分:0)

使用new Number(firstStr)时,您正在创建一个对象,该对象不仅包含其值。

如果只想使用普通整数,则删除单词new,它将仅返回其值。

如果您打算保留new,则需要在a.valueOf()函数中检查b.valueOf()compare

答案 1 :(得分:0)

您使用的是new Number(),这将导致{}始终为假

function compare(a, b) {
console.log(a,b)
    if (a == b) {
        var valid = true;
    } else {
        var valid = false;
    }
    return valid;
}

function test(first, second) {
    if(!isNaN(first) && !isNaN(second)){
        alert(compare(first, second));
    } else {
        alert('TRY AGAIN');
    }
}


var firstStr = prompt('Enter first Number:');
var first = Number(firstStr);

var secondStr = prompt('Enter second Number:');
var second = Number(secondStr);

test(first, second);

答案 2 :(得分:0)

只需删除新的Number()

// same code ...

var firstStr = prompt('Enter first Number:');
var first = firstStr; // remove new Number()

var secondStr = prompt('Enter second Number:');
var second = secondStr; // remove new Number()

test(first, second);