如何理解JS内的Truthy值和Falsy值

Posted qq965921539

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何理解JS内的Truthy值和Falsy值相关的知识,希望对你有一定的参考价值。

跟据MDN的术语表解释如下:

javascript 中,Truthy (真值)指的是在 布尔值 上下文中转换后的值为真的值。所有值都是真值,除非它们被定义为 falsy (即除了 false,0,"",null,undefined 和 NaN 外)。

JavaScript 在布尔值上下文中使用强制类型转换(coercion)。

JavaScript 中的真值示例如下(将被转换为 true,if 后的代码段将被执行):

if (true)
if ()
if ([])
if (42)
if ("foo")
if (new Date())
if (-42)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘的值.

JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,比如:在条件语句或者循环语句中

例子节
JavaScript中falsy值的例子 (通过 if 代码段将falsy值转换为false):

if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if (‘‘)
if ("")
if (document.all)

document.all 在过去被用于浏览器检测,是html规范在此定义了故意与ECMAScript标准相违背的(译者注:document.all虽然是一个对象,但其转换为boolean类型是false),以保持与历史代码的兼容性 (if (document.all) // Internet Explorer code here 或使用 document.all 而不先检查它的存在: document.all.foo).

falsy有时写作falsey,即使在英语中,通常将一个单词转换成形容词时,会去掉末尾的字母e,添加字母y。(比如:noise => noisy, ice => icy, shine => shiny)

见:https://developer.mozilla.org/zh-CN/docs/Glossary/Truthy  , https://developer.mozilla.org/zh-CN/docs/Glossary/Falsy

以上是关于如何理解JS内的Truthy值和Falsy值的主要内容,如果未能解决你的问题,请参考以下文章

从数组中删除Falsy值

如何在 C++ 中获取边界框(矩形)内的像素值和坐标?有啥方法吗?

JS:默认函数参数值和范围

Falsy Bouncer

bool() 和 operator.truth() 有啥区别?

Falsy Bouncer-freecodecamp算法题目