# Boolean Skill

逻辑相关的JS技巧。

# 短路运算符

const a = d && 1; // 前面条件满足才执行后面
const b = d || 1; // 前面条件不满足才执行后面
const c = !d; // 前面条件取反
const e = !!d; // 强制转换Boolean型

# 判断数据类型

可判断类型

undefined、 null、 string、 number、 boolean
array、 object、 symbol、 date、 regexp
function、 asyncfunction、 arguments
set、 map、 weakset、 weakmap

const DataType = (tgt, type) => {
    const dataType = Object.prototype.toString.call(tgt)
        .replace(/\[object /g, '')
        .replace(/\]/g, '')
        .toLowerCase();
    return type ? dataType === type : dataType;
}
DataType('young'); // 'string'
DataType(20190214); // 'number'
DataType(true); // 'boolean'
DataType([], 'array'); // true
DataType({}, 'array'); // false

# 是否为空数组

const arr = [];
const flag = Array.isArray(arr) && !arr.length; // flag => true

# 是否为空对象

Why DataType?

const obj = {};
const flag = DataType(obj, 'object') && !Object.keys(obj).length; // flag => true

# 满足条件时执行

const flagA = true; // 条件A
const flagB = false; // 条件B
(flagA || flagB) && Func(); // 满足A或B时执行
(flagA || !flagB) && Func(); // 满足A或不满足B时执行
flagA && flagB && Func(); // 同时满足A和B时执行
flagA && !flagB && Func(); // 满足A且不满足B时执行

# 为非假值时执行

const flag = false; // undefined、 null、 ''、 0、 false、 NaN
!flag && Func();

# 数组不为空时执行

const arr = [0, 1, 2];
arr.length && Func();

# 对象不为空时执行

const obj = {a: 0, b: 1, c: 2};
Object.keys(obj).length && Func();

# 函数退出代替条件分支退出

if (flag) {
    Func();
    return false;
}
// 换成
if (flag) {
  return Func();
}

# switch/case使用区间

const age = 26;
switch (true) {
  case isNaN(age): console.log('not a number');
      break;
  case (age < 18): console.log('under age');
      break;
  case (age >= 18): console.log('adult');
      break;
  default: console.log('please set your age');
      break;
}
最近更新时间: 2020/10/10 18:15:40