优秀的编程知识分享平台

网站首页 > 技术文章 正文

前端小知识:弄懂Javascript中的假值问题

nanyue 2024-08-19 18:55:03 技术文章 5 ℃

今天我们聊聊Javascript中的假值问题,废话不多说,我们先来看一道关于假值的笔试题:

如果你对每个打印的值都很确定,且全都正确,那么你可以不用继续往下看了。如果不是,请继续往下看。

1.什么是假值

假值:我们将经过toBoolean操作后返回false的值叫做假值。

上面的代码中,if判断语句就隐式的将数组中的每个元素做了一次toBoolean操作。

实际工作中还会用到判断真假的语句有以下几种:

  • if语句
  • while语句
  • for的第二个语句

注意点:对假值以外的值进行toBoolean转换时都会返回true。

2.假值有哪些?

Javascript中主要有以下6个假值:undefined、null、0、false、NaN、'';

toBoolean操作具体的返回值请看下面这张ES6规范文档中的截图:

看完这张图我们再回看上面的题目,答案就很清晰了。

3.注意与“==”运算符的区别

使用“==”运算符和上面说的直接判断真假会有所区别,千万不要混淆。因为“==”运算符进行的是数值运算,也就是说是使用toNumber操作。下面通过题目对两者进行解析:

分析:从以上结果可以得到以下结论

  • false、0、''、[]相互“==”判断为true,其余为false
  • undefined、null相互“==”判断为true,其余为false
  • NaN跟自身都不相等,所以永远判断为false

注意:undefined进行toNumber操作后会转换成NaN,因此与其他的都不等。只是按照约定undefined == null判断为true

  • 这里着重说一下 false==[] 为什么会返回true,我们上面不是刚说完[]空数组做判断会作为true吗?
  • 因为对[]自身进行判断时,进行的是toBoolean操作,根据转换规范,对象返回的都是true。而在对[]进行“==”运算时,进行的是toNumber操作,因此空数组返回的是0,false也转换成了0,因此返回的是true

最近发表
标签列表