你真的了解JavaScript中的真值吗?

今天在阅读Vue官网时get到了一个没有注意过的小知识点,记录一下


通常我们所使用的 if或while 都会说判断为真时会执行相应的代码,那我们所认为的真是什么?可能大部分人第一反应都是 true 这个值,或许也可能会想到可以被认为是真值的任意正整数.

当然这样想完全没有错误,可是我个人觉得这样的想法更贴近于类似C语言方面的判断方式,我们的JavaScript拥有自己独特的术语:Truthy

这个单词翻译过来就是真值的意思,但是它并不单纯指代那些本来就是真值的值,它指的是在布尔值上下文中转换后的值为真的值.也就是说它包含了转换的过程,我们在学习中往往忽略了这一点,只会觉得真就是真,假就是假,但让你说出它为什么是真,你只能把它归于语法习惯.

这也就可以解释,下面的代码为何都可以运行.在这里我们甚至发现了负值,发现了-Infinity

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

当然与Truthy对应的是falsy,它包括false,0,"",null,undefined 和 NaN

补充一点:JavaScript在布尔值上下文中使用强制类型转换

如果对您的生活学习有帮助,点个喜欢呗~

基础知识,不喜勿喷哦

你可能感兴趣的:(你真的了解JavaScript中的真值吗?)