JavaScript if语句不';行不通

JavaScript if语句不';行不通,javascript,if-statement,Javascript,If Statement,我有一个比较两个对象属性(字符串)的简单if语句: 我很惊讶他们没有通过,所以我调试: console.log(client.room + " == " + sender.room); 并且输出是正确的: #General == #General 所以我尝试了很多东西,但仍然不起作用 然后我试了一下: var clientRoom = client.room; if(clientRoom == '#General'){ /*Work!*/ } if(client.room == '#Gen

我有一个比较两个对象属性(字符串)的简单if语句:

我很惊讶他们没有通过,所以我调试:

console.log(client.room + " == " + sender.room);
并且输出是正确的:

#General == #General
所以我尝试了很多东西,但仍然不起作用

然后我试了一下:

var clientRoom = client.room;
if(clientRoom == '#General'){ /*Work!*/ }

if(client.room == '#General'){ /*Work!*/ }

但我还是被困在。。。如何比较这两个对象属性以确定它们是否相等?

听起来像是
client.room
sender.room
是使用
toString
方法的对象。两个不同的对象彼此之间没有
==
,即使它们具有相同的内容并且它们的
toString
匹配

您的
client.room==“#General”
之所以有效,是因为
==
将强制其操作数尝试使其成为相同的类型。在这种情况下,它将
client.room
强制为字符串(通过
client.room
toString

您需要确定要使用哪些标准来确定对象是否等效,并在比较对象时使用这些标准。您可以将其封装在
equals
方法或类似方法中

问题说明:

教室{
建造师(姓名){
this.name=名称;
}
toString(){
返回“#”+this.name;
}
}
const room1=新房间(“一般”);
const room2=新房间(“一般”);
console.log(room1==room2);//假的
console.log(room1+“-”+room2);//#一般-#一般

console.log(room1==“#General”)//true
什么是
client.room
?什么是
sender.room
?如果它们是字符串,
=
绝对有效。如果它们是具有
toString
方法的对象,
=
将不适用于具有相同内容的不同对象。对象的字符串形式并不能告诉我们该对象是什么。它似乎不是一个简单的字符串。是的,toString()方法解决了我的问题。非常感谢。
var clientRoom = client.room;
if(clientRoom == '#General'){ /*Work!*/ }

if(client.room == '#General'){ /*Work!*/ }