Javascript 'if(condition=value)`是比较的正确语法吗?
如果Javascript 'if(condition=value)`是比较的正确语法吗?,javascript,if-statement,Javascript,If Statement,如果If((hit.transform!=transform)表示如果hit.transform不是transform,那么如何检查语句是否正确。If(hit.transform=transform)似乎不起作用。需要两个等号表示相等 if (hit.transform == transform) 请注意,这将允许各种隐式转换,因此您应该真正使用三个等号标识相等或严格相等: if (hit.transform === transform) 请注意,单个等号是赋值 x = y; 现在x的值是
If((hit.transform!=transform)
表示如果hit.transform不是transform
,那么如何检查语句是否正确。If(hit.transform=transform)
似乎不起作用。需要两个等号表示相等
if (hit.transform == transform)
请注意,这将允许各种隐式转换,因此您应该真正使用三个等号标识相等或严格相等:
if (hit.transform === transform)
请注意,单个等号是赋值
x = y;
现在x的值是y
你的陈述
if(hit.transform = transform)
将hit.transform指定给transform的值,然后测试此表达式的结果(与hit.transform的新值相同)是否为“truthy”它是
if(hit.transform == transform)
不等于!=
等于=
if (hit.transform == transform) {
您编写的内容实际上尝试设置hit.transform的值totransform您需要使用'=='
这是谷歌的第一个搜索结果,并给出了解释
根据要求,您可以在=
和==
之间进行选择(取反后,它们将分别成为!=
和!=
)。三等号符号也将执行类型检查
尝试在javascript控制台中输入以下内容:
1 == 1 // true
1 === 1 // true
1 == "1" // true
1 === "1" // false
编辑:=
是赋值运算符,与上述比较运算符不同:
a = 1 // 1
a = "1" // "1"
a = "foo" // "foo"
当在if
-条件(如if(a=“foo”)
中使用此选项时,实际上是将a
设置为“foo”
,然后测试if(“foo”)
。虽然“foo”
本身不是布尔条件,Javascript引擎会将其转换为true
,这就是它仍然工作的原因
然而,这可能会引入非常微妙的错误,很难追踪,因此除非您真正了解自己在做什么,否则最好避免这样编程。此外,===
不是身份平等。它是严格平等:这两个对象实际上可能是不同的对象,但仍然通过严格平等测试。@Adamrack是对的,那么答案中的up——为什么如果(a=b)
是“有效的”?(即使它的行为很滑稽。)它到底在做什么?你必须为你的up投票工作;-)你好,他应该用吗!==也或者只是!=@pst:“这两个对象可能实际上是不同的对象,但仍然通过了严格的平等测试”也许是一个例子?@pst:以什么方式受到影响?当涉及到对象时,==
会进行身份比较。从“如果x和y引用同一个对象,则返回true”。那么=
做了什么?为什么它会以这种方式工作(在上下文中)?感谢各位的快速回答。。StackOverflow是最好的!那么,帖子中的=
是怎么回事?这是怎么回事?处理=