JavaScript 中 `if(x=y)` 会返回 false 或失败吗?
这是一个理论问题,因为我无法想象任何实际用途。
我今天做了一个大胆的声明,在 JavaScript 中,以下内容将始终返回 true:
if (x=y){
//code
}
并且 //code
,无论它是什么,都将始终被执行。
这是典型的拼写错误,即不输入 ==
甚至 ===
。
此功能也可以在 C/C++ 中演示,但作为比 JavaScript 更强类型的语言,不难想到此分配会失败的情况。
然而,在 JavaScript 中,给定两个变量 x 和 y,我很难想象在什么情况下会失败,或者处理条件代码块不会执行。
有人吗?
This is a theoretical question, as I can't imagine any practical uses.
I made a bold statement today saying that in JavaScript, the following will always return true:
if (x=y){
//code
}
And the //code
, whatever it is, will always be executed.
This is the classic typo of not entering ==
or even ===
.
This feature can also be demonstrated in C/C++, but being more strongly-typed languages than JavaScript, it is not hard to think instances where this assignment will fail.
However, in JavaScript, given two variables x
and y
, I was struggling to think of an occation where this would fail, or the proceding conditional code block would not execute.
Anyone?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果 y=0、y=null、y=undefined 或 y=false,则 (x=y) 将计算为 false。
编辑:如果 y=NaN 也如此
编辑:如果 y=""
It (x=y) would evaluate to false if y=0, y=null, y=undefined or y=false.
Edit: Also if y=NaN
Edit: Also if y=""
条件块“x=y”将始终执行。但在 javascript 中,“false”、undefined、null 和 0 的计算结果为 false。因此,只要 y 是这些值之一,“//code”就不会被执行。
The conditional block "x=y" will always execute. But in javascript "false", undefined, null, and 0 evaluate to false. So whenever y is one of those values, the "//code" will not be executed.