理解JavaScript Truthy和Falsy

ton*_*nyf 27 javascript

有人可以使用下面的示例数据解释JavaScript Truthy和Falsy.我已阅读其他主题但仍感到困惑.

var a = 0;

var a = 10 == 5;

var a = 1; 

var a = -1;
Run Code Online (Sandbox Code Playgroud)

根据我的理解,我相信这var a = 1;是唯一的真理,其余的都是假的 - 这是正确的吗?

Tus*_*har 49

根据我的理解,我相信var a = 1; 是唯一的truthy,其余的是假的 - 这是正确的吗?

没有.

  1. var a = 0;

    零号是假的.但请注意,字符串零"0"是真实的.

  2. var a = 10 == 5;

    这是一样的var a = (10 == 5);,所以这是假的.

  3. var a = 1;

    var a = -1;

    包括负数在内的任何非零数字都是真实的.

引自MDN

在JavaScript中,truthy值是在布尔上下文中求值时转换为true的值.所有值均为truthy除非它们被定义为falsy(即,除了false,0,"",null,undefined,和NaN).

JavaScript中的虚假值列表:来自MDN

  1. false
  2. null
  3. undefined
  4. 0
  5. NaN
  6. ''
  7. ""

  • 为什么“ document.all”是虚假的? (7认同)
  • @Tushar:真是太好了……真是太恐怖了。 (3认同)
  • @Claudiu _`document.all`过去曾用于浏览器检测,并且HTML规范在此处定义了故意违反ECMAScript标准的行为,以保持与旧版代码的兼容性(`if(document.all){// Internet Explorer代码}或使用`document.all`而不先检查其存在:`document.all.foo`)._ (2认同)

Cla*_*diu 14

有一种简单的检查方法,您现在可以永久使用:

function truthyOrFalsy(a) {
    return a ? "truthy" : "falsy";
}
Run Code Online (Sandbox Code Playgroud)

以机智:

> truthyOrFalsy(0)
"falsy"
> truthyOrFalsy(10 == 5)
"falsy"
> truthyOrFalsy(1)
"truthy"
> truthyOrFalsy(-1)
"truthy"
Run Code Online (Sandbox Code Playgroud)

另请参阅JavaScript中所有falsey值的列表.


baj*_*ran 5

Truthy->在布尔上下文中解析为true的值

Falsy->在布尔上下文中解析为false的值


为了更好地理解,falsy下面给出了值。

  1. false
  2. 0
  3. empty string
  4. null
  5. undefined
  6. NaN