我有一个Nodes'标志'数组,我想设置我的对象在该数组中第一个对象的位置,它工作,对象实际上按预期定位,但是当我进行比较时,它失败并记录'NO'。
设置位置的代码行有效,但比较失败,这里有什么问题?!
start: function () {
this.node.position = this.flags[0].position;
this.movement();
},
movement: function() {
if (this.node.position == this.flags[0].position) { // Problem
console.log("YES");
}
else {
console.log("No");
更新
当我这样做的时候它会起作用:
if (this.node.position.x == this.flags[0].position.x) // or position.y
答案 0 :(得分:1)
如果你在这里写javascript(看起来像你这样做),你应该知道两件事:
您无法与开箱即用的==
对象进行比较
({“a”:1} == {“a”:1}) 将返回 false (您可以在浏览器中自行尝试。 作为一种解决方法,您可以执行以下操作:
function posCompare(p1,p2){ 返回p1.x === p2.x&& p1.y === p2.y; }
然后使用它代替==
作为职位
===
代替==
?要知道的第二件事是仅使用===
。您可以了解差异Which equals operator (== vs ===) should be used in JavaScript comparisons?,但我会在任何地方远离==
。它比较慢,可能会在这里和那里引起奇怪的错误 - 根本就不要使用它