if语句中隐式转换

1、前言

最近在编写项目过程当中,发现本身对if语句判断的时候,在面对一些0、字符串为空的状况下,本身犹豫了那么几秒ide

甚至有时候还可怕的写下了丑陋的代码测试

if(str !== ''){// do some things}复制代码

今天,特地写了这篇文章记录下,让本身长长记性,同时后面有空去翻翻红宝书对象

2、测试

考虑的状况有如下:字符串

  • 字符串为空
  • 数值为零
  • undefined
  • null
  • 对象不存在的属性
  • NaN

字符串为空

if ('') {  console.log('访问空字符串,能经过')
}// 没输出复制代码

数值为零

if (0) {  console.log('访问0,能经过')
}// 没输出复制代码

undefined

if (undefined) {  console.log('访问undefined,能经过')
}// 没输出if(!undefined){console.log('非undefined,能经过')
}// 非undefined,能经过复制代码

null

if (null) {  console.log('null,能经过')
}// 没输出if(!null){console.log('非null,能经过')
}// 非null,能经过复制代码

对象不存在的属性

let obj = {  foo: "foo",  num: 0}if (obj.bar) {  console.log('访问对象不存在属性时候,能经过')
}// 没输出if (obj.foo) {  console.log('访问对象已存在属性时候,能经过')
}// 访问对象已存在属性时候,能经过复制代码

NaN

if(NaN){console.log('访问NaN,能经过')
} 
// 没输出if(!NaN){console.log('不为NaN,能经过')
}// 不为NaN,能经过复制代码
相关文章
相关标签/搜索