0%

条件语句的简写技巧

可能入坑不久的同学还会用着if (value !== null || Value !== undefined)这样的判断语句, 而实际上只要理解判定的规则, 善用规则, 就能大大的提高代码的可读性. 接下来让我们深入学习一下.

开始

大多编程语言中最为常用的一个语句就是if语句, 这种条件语句是通过判断指定表达式的值来决定执行还是跳过某些语句. 它的语法如下:

1
2
3
if (Expression) {
statement
}

其中**Expression(表达式/条件)**可以是任意表达式或者值.

  1. 首先它会解析表达式的值
  2. 如果表达式是无法解析的, 会报ReferenceError的错误并停止. 如果不是则继续.
  3. 判断值的引用类型, 如果是布尔值, 字符串和符号则继续. nullundefined永远都返回 false.
  4. 将值传入toBoolean(exprValue)根据下面的规则转换为布尔值.
valueBoolean
未定义(Undefined)false
空值(null)false
布尔值(Boolean)返回参数本身
数字(Number)如果参数是+0, -0NaN,则返回false; 否则返回true
字符串(String)如果参数是空字符串(长度为零),则返回false; 否则返回true
Symbol返回 true
Object返回 true

这里我们得出undefined, null, NaN, 空字符串, 和数字 0 都是过不了条件语块的规则, 因此我们可以利用这一点来对代码进行简写.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var userName = 'hello';
var flag = false;

// bad code
if (value != undefined) {
...
}

// bad code
if (value !== undefined || value !== null || value !== false) {
...
}

// good code
if (userName) {
something...
}

// flag锁, 利用取反转换布尔值
if (!flag) {
flag = true;
something...
}

相同的, 也没有必要去使用==规范不推荐的方式去隐式转换类型, 这种规则同样适用于三目运算符, switch等条件运算中去… 这样看起来是不是自己的代码整洁多了呢~

参考资料

「请笔者喝杯奶茶鼓励一下」

欢迎关注我的其它发布渠道