'if(condition = value)`是比较的正确语法吗?
如果if((hit.transform != transform)
表示if hit.transform is Not transform
,那么如何检查陈述是否正确。 if(hit.transform = transform)
似乎不起作用。'if(condition = value)`是比较的正确语法吗?
需要两个等于平等
if (hit.transform == transform)
需要注意的是,将允许各种隐式转换的,所以你应该使用三个等号,身份平等和完全平等的迹象:
if (hit.transform === transform)
请注意,一个等号是分配。
x = y;
现在x的值为y。
你的陈述
if(hit.transform = transform)
分配hit.transform改造的值,然后测试,看看这个表情,这将是相同的hit.transform的新值的结果,是“truthy”
+1用于早期用'==='教授良好习惯。 – RightSaidFred
另外,'==='不是*身份相等。这是严格的平等:两个对象实际上可能是*不同的对象,但仍然通过严格的平等测试。 – 2011-12-13 01:21:09
@AdamRackis对,然后在答案 - 为什么是“如果(A = B)”“有效”? (即使它很有趣。)它究竟在做什么?你将不得不为你的投票工作;-) – 2011-12-13 01:22:13
它
if(hit.transform == transform)
-
!=
是不等于。 -
==
等于。
所以你会写:
if (hit.transform == transform) {
你写什么实际尝试这样设置hit.transform
价值transform
。
那么'='是做什么的,为什么它的工作方式(在上下文中)? – 2011-12-13 01:24:03
你需要使用“===”
这里是谷歌的第一个结果与解释 http://geekswithblogs.net/brians/archive/2010/07/03/quality-equality-with-javascript-quotquot-gt-quotquot.aspx
在大多数情况下,如果他使用'==',它也会有效。 – 2011-12-13 01:23:16
根据不同的要求,您可能==
和===
之间选择(,取反这些都将成为分别为!=
和!==
)。三重等号符号也将执行类型检查。
尝试进入您的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
,这就是为什么它仍然有效。
然而,这可能会引入非常微妙的错误,这可能很难追查到,所以你最好避免这样的编程,除非你真的知道你在做什么。
那么,帖子中的“=”是什么呢?这是怎么回事? – 2011-12-13 01:27:08
处理'='的扩展答案 – Bart
感谢帅哥的快速和很多答案.. *是最好的! – Thomas