问题描述
如何比较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");
}
它不会在if以上执行。 为什么?
小提琴: :
1楼
new
关键字实际上创建了一个数字类型对象,其中数字10不是数字类型对象。
===
运算符会检查类型和值是否每次都为假。
添加+
前缀将使其成为一个数字,以便您进行比较。
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"); }
3楼
因为new Number(10)
将返回一个类型的新对象,该对象永远不会等于 。
如果您想将Number
对象与实际的整数或浮点数进行比较,则需要先对其进行转换,例如用速记+
前缀: +newNum === 10
或简单地使用非严格比较: newNum == 10
。