【问题标题】:Javascript: If([]) unexpected result [duplicate]Javascript:如果([])意外结果[重复]
【发布时间】:2016-09-20 16:57:27
【问题描述】:

我认为我知道的每一种语言

if(a)

是一样的
if(a == true)

在 JavaScript 中结果是不正确的,因为:

if([])

似乎表现得好像条件已经满足,但是:

if([] == true)

做相反的事情。

我真的找不到任何可能的解释,尤其是空字符串不会出现此问题(例如,== true,但不是=== true,与空数组相同)。这是 JavaScript 中的错误还是什么?

【问题讨论】:

  • if(a) [...] same as [...] if(a == true) - 呃,这可能只是 PHP 和 Python?能够将任意值转换为布尔值并不是普遍的。无论如何,here 是真/假值在 JS 中的工作方式。

标签: javascript


【解决方案1】:

在 JavaScript 中,存在真值和假值的概念。 if 语句测试给定值的真实性或虚假性,而不是与truefalse 严格相等。

true 显然是真实的。 false 显然是假的。其余的可能有点棘手。 MDN 可能有关于哪些值评估为假的最清晰的文档:https://developer.mozilla.org/en-US/docs/Glossary/Truthy

在这种情况下,[] 是一个真值,因此条件通过并执行代码。

【讨论】:

    猜你喜欢
    • 2017-10-04
    • 1970-01-01
    • 2013-02-19
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2014-12-01
    相关资源
    最近更新 更多