IF条件下的Javascript Falsy检查执行顺序

时间:2019-03-08 08:51:08

标签: javascript

我有一个程序,该程序调用后端服务并收集响应。收集如下。我们对响应对象进行解构,得到ErrorData

const { data, error } = response;

如果没有错误,则Error对象将为空。考虑以下两个选项。

选项一:

if (!error) {
// handle error
}

选项二:

if (error !== null) {
// handle error
}

选项一中,根据this answer,检查了以下条件。

  1. 未定义:如果该值未定义且未定义
  2. :如果为空,例如,如果DOM元素不存在...
  3. 空字符串:”
  4. 0 :数字零
  5. NaN :不是数字
  6. 错误

调用选项1 时,执行顺序是吗? 选项1 中如何进行内部条件检查?基于此,如果我们使用选项1 而不是选项2 ,会对性能产生一定的影响吗?

1 个答案:

答案 0 :(得分:1)

这种if语句用法没有顺序,JS只是执行类型转换以将任何值强制转换为布尔值,然后评估结果,请查看此链接以获取更多详细信息:https://developer.mozilla.org/en-US/docs/Glossary/Falsy

错误的结果:

if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')
if ("")
if (``)
if (document.all)
// => false

真实结果:

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