如何在JQuery中比较新对象的值?

时间:2015-08-07 09:27:09

标签: javascript jquery

如何在Javascript中比较对象的值?

var newNum = new Number(10);
console.log(newNum); (It displays Number {})
var newPanelId = "panel" + newNum;
console.log("New Panel ID:" + newPanelId); (It displays panel10. Perfect)

但是当我比较时

if (newNum === 10)
{
  console.log("Print It");
}

如果是,则不执行上述操作。为什么呢?

小提琴:https://jsfiddle.net/9fot84gk/

3 个答案:

答案 0 :(得分:2)

new关键字实际上创建了一个数字类型对象,其中数字10不是数字类型对象。 ===运算符检查类型和值是否因此您的条件每次都是假的。添加+前缀会使其成为一个数字,以便您进行比较。

答案 1 :(得分:2)

您已使用条件newNum === "10"三元组 =表示它也会检查类型,并且当您在10周围使用引号时,它正在查找字符串,因此它永远不会计算为true

相反,执行newNum == 10(或者,作为 double =仅检查值,类型,newNum == "10"将也工作):



var newNum = new Number(10);
console.log(newNum);
var newPanelId = "panel" + newNum;
console.log("New Panel ID:" + newPanelId);

if (newNum == 10) {
  console.log("Print It");
}




updated fiddle here

答案 2 :(得分:1)

因为new Number(10)将返回Number类型的新对象,该对象永远不会等于primitive。如果要将Number对象与实际的整数或浮点数进行比较,则需要先将其转换,例如使用简写+前缀:+newNum === 10或简单地使用非严格比较:{{ 1}}。