将`if(x = y)`永远返回false或者在JavaScript中失败?

时间:2010-11-04 08:55:16

标签: javascript conditional-operator

这是一个理论问题,因为我无法想象任何实际用途。

我今天做了一个大胆的声明,说在JavaScript中,以下内容总是会返回true:

if (x=y){
    //code
}

//code,无论是什么,都会被执行。

这是不输入==甚至===的典型错字。

此功能也可以在C / C ++中演示,但是比JavaScript更强类型的语言,不难想象这个赋值失败的实例。

但是,在JavaScript中,给定了两个变量xy,我很难想到这会失败,或者程序条件代码块不会执行。

任何?

3 个答案:

答案 0 :(得分:14)

如果y = 0,y = null,y = undefined或y = false,则it(x = y)将评估为false。

修改:如果y = NaN

编辑:如果y =“”

答案 1 :(得分:1)

条件块“x = y”将始终执行。但是在javascript“false”中,undefined,null和0计算为false。因此,只要y是其中一个值,就不会执行“// code”。

答案 2 :(得分:1)

js
js> if(x=y){
print('hello');
}
typein:1: ReferenceError: y is not defined
js>