【问题标题】:Will `if(x=y)` Ever Return false, or fail In JavaScript?`if(x=y)` 会返回 false 还是在 JavaScript 中失败?
【发布时间】:2010-11-04 08:55:16
【问题描述】:

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

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

if (x=y){
    //code
}

而//code,不管它是什么,都会被执行。

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

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

但是,在 JavaScript 中,给定两个变量 x 和 y,我很难想到会失败的情况,或者无法执行正在处理的条件代码块。

有人吗?

【问题讨论】:

  • 对于反对者:如果您返回,请解释原因。没有解释的否决票是毫无用处的。

标签: javascript conditional-operator


【解决方案1】:

如果 y=0、y=null、y=undefined 或 y=false,则它 (x=y) 的计算结果为 false。

编辑:如果 y=NaN

编辑: 如果 y=""

【讨论】:

  • 澄清一下;该表达式基本上计算y 的值,因此如果y 等于false,则该语句将为假。
  • 或 NaN 或空字符串。任何“虚假”的东西:google.de/search?q=javascript+falsy
  • @Tatu -- 好吧,它还设置了“x”的值。这可能很重要。
  • @RoToRa,是的,我忘记了 NaN。让我解决这个问题。 S
  • @Ben Lee,是的,但我的意思是关于评估,x 没有意义。
【解决方案2】:

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

【讨论】:

    【解决方案3】:
    js
    js> if(x=y){
    print('hello');
    }
    typein:1: ReferenceError: y is not defined
    js> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-12
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      相关资源
      最近更新 更多