【问题标题】:Javascript conditoinal returning "undefined"Javascript条件返回“未定义”
【发布时间】:2015-05-26 22:18:49
【问题描述】:

有各种各样的函数返回“未定义”的示例,但我无法找到为什么我的 JS 条件(我已简化为简单的 IF...ELSE 语句)在控制台。

var blue = "color";
var green = "color";


if (blue = green) {
    console.log("success");
}
else {
    console.log("fail");
}

谁能解释一下什么是未定义的?提前致谢。

【问题讨论】:

  • console.log() 返回的是undefined,而不是代码本身。

标签: javascript conditional


【解决方案1】:

你的 if 包含一个赋值,而不是一个相等性检查。

替换:

blue = green

与:

blue == green

或者最好:

blue === green

由于两者都应该是字符串,因此您可以(并且应该)使用严格的相等检查 (===)。

== 的唯一值相比,此“三等号”检查类型和值是否相等:

alert("1 === '1': " + (1 === '1'));
alert("1 == '1': " + (1 == '1'));

现在,如果您在浏览器的控制台中运行该代码,实际代码将不会返回值,因此,除了 console.log() 结果之外,它将输出 undefined

【讨论】:

  • 永远不要使用双等号:stackoverflow.com/questions/359494/…
  • 永远不要说“永远”。如果你知道你在比较什么类型,并且你熟悉 JS 的类型转换,== 真的没那么糟糕。
  • 真的吗? 2票否决?这个答案有什么问题?
  • 你和我都 @Cerbrus i.imgur.com/otKjoWr.png 。我希望有时能给出更多解释。
【解决方案2】:

您在控制台中看到 undefined 的原因是因为执行的代码就是这样完成的。最后执行的语句是没有返回值的 if else 子句,因此是undefined

需要注意的第二个重要方面是,您在 if 语句中进行了赋值,并且作为该赋值的结果,您将始终以 if( "color" ) 结尾,这将始终为真,并且作为结果 console.log 总是会出现。

这导致控制台看起来像

"success"
undefined

由于有人对此表示反对,并且显然不熟悉执行控制台代码

【讨论】:

    【解决方案3】:

    您当前的 if 语句正在执行将蓝色设置为等于绿色的操作。单个等号实际上并不检查真值。

    为了在此处运行布尔检查,您需要使用三等号运算符。

    if (blue === green)
    

    如果您在控制台中运行它,它的外观如下:

    由于您的 if 语句实际上并没有返回任何内容(相反,它只是记录到控制台),您将收到 undefined 作为您的输出。

    【讨论】:

    • 你可能想解释一下为什么
    • 这仍然导致未定义。
    • 我刚刚在控制台中测试了这个。 if 语句在使用三等号运行时返回“成功”。我是否遗漏了一些未发布的 OP 代码的重要部分?
    • if 语句不返回任何内容。当然,'success' 将被记录,但没有返回任何内容。
    • 感谢您的建议,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多