`if(condition = value)`是正确的比较语法吗?

时间:2011-12-13 01:17:07

标签: javascript if-statement

如果if((hit.transform != transform)表示if hit.transform is Not transform,那么如何检查语句是否正确。 if(hit.transform = transform)似乎不起作用。

5 个答案:

答案 0 :(得分:8)

你需要两个等于平等的标志

if (hit.transform == transform)

请注意,这将允许所有类型的隐式转换,因此您应该使用三个等于符号 - 标识相等或严格相等:

if (hit.transform === transform)

请注意,单个等号是赋值。

x = y;

现在x的值为y。

您的陈述

if(hit.transform = transform)

将hit.transform指定给transform的值,然后测试以查看此表达式的结果(与hit.transform的新值相同)是否为“truthy”

答案 1 :(得分: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,这就是它仍然有效的原因。

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

答案 2 :(得分:2)

它是

if(hit.transform == transform) 

答案 3 :(得分:2)

答案 4 :(得分:1)

  • != 等于。
  • ==等于。

所以你要写:

if (hit.transform == transform) {

您写的内容实际上是如此设置 hit.transformtransform的值。