Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 'if(condition=value)`是比较的正确语法吗?_Javascript_If Statement - Fatal编程技术网

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的值
to
transform

您需要使用'=='

这是谷歌的第一个搜索结果,并给出了解释

根据要求,您可以在
=
==
之间进行选择(取反后,它们将分别成为
!=
!=
)。三等号符号也将执行类型检查

尝试在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是最好的!那么,帖子中的
=
是怎么回事?这是怎么回事?处理
=