2011-12-13 93 views

回答

8

需要两个等于平等

if (hit.transform == transform) 

需要注意的是,将允许各种隐式转换的,所以你应该使用三个等号,身份平等和完全平等的迹象:

if (hit.transform === transform) 

请注意,一个等号是分配。

x = y; 

现在x的值为y。

你的陈述

if(hit.transform = transform) 

分配hit.transform改造的值,然后测试,看看这个表情,这将是相同的hit.transform的新值的结果,是“truthy”

+1

+1用于早期用'==='教授良好习惯。 – RightSaidFred

+1

另外,'==='不是*身份相等。这是严格的平等:两个对象实际上可能是*不同的对象,但仍然通过严格的平等测试。 – 2011-12-13 01:21:09

+0

@AdamRackis对,然后在答案 - 为什么是“如果(A = B)”“有效”? (即使它很有趣。)它究竟在做什么?你将不得不为你的投票工作;-) – 2011-12-13 01:22:13

2

if(hit.transform == transform) 
1
  • !=等于。
  • ==等于。

所以你会写:

if (hit.transform == transform) { 

你写什么实际尝试这样设置hit.transform价值transform

+0

那么'='是做什么的,为什么它的工作方式(在上下文中)? – 2011-12-13 01:24:03

3

根据不同的要求,您可能=====之间选择(,取反这些都将成为分别为!=!==)。三重等号符号也将执行类型检查。

尝试进入您的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,这就是为什么它仍然有效。

然而,这可能会引入非常微妙的错误,这可能很难追查到,所以你最好避免这样的编程,除非你真的知道你在做什么。

+1

那么,帖子中的“=”是什么呢?这是怎么回事? – 2011-12-13 01:27:08

+0

处理'='的扩展答案 – Bart