一、空值合并运算符:??
它只在左侧的操作数为null
或undefined
时返回右侧的操作数。
注意事项:
??
不会对false
,0
,""
(空字符串)或任何其他假值进行处理。- 如果左侧的操作数不是
null
或undefined
,将不会对右侧的操作数进行评估,遵循短路原则。 - 如果左侧的操作数是
null
或undefined
,将评估并返右侧的操作数。 - 如果两个操作数都是
null
或undefined
,返回null
或undefined
。 ??
是ES2020(ES11)引入的新特性,使用??
需要ES2020(或更高版本)支持。
二.三元运算符?
?运算符号Truthy判定
const value1 = null;
const result1 = value1 ? 'true' : 'false';
console.log('null ? is ', result1);
const value2 = undefined;
const result2 = value2 ? 'true' : 'false';
console.log('undefined ? is ', result2);
const value3 = true;
const result3 = value3 ? 'true' : 'false';
console.log('true ? is ', result3);
const value4 = false;
const result4 = value4 ? 'true' : 'false';
console.log('false ? is ', result4);
const value5 = 0;
const result5 = value5 ? 'true' : 'false';
console.log('0 ? is ', result5);
const value6 = 1;
const result6 = value6 ? 'true' : 'false';
console.log('1 ? is ', result6);
const value7 = NaN;
const result7 = value7 ? 'true' : 'false';
console.log('NaN ? is ', result7);
const value8 = '';
const result8 = value8 ? 'true' : 'false';
console.log('"" ? is ', result8);
const value9 = 'abc123';
const result9 = value9 ? 'true' : 'false';
console.log('"abc123" ? is ', result9);
const value11 = [];
const result11 = value11 ? 'true' : 'false';
console.log('[] ? is ', result11);
const value12 = {};
const result12 = value12 ? 'true' : 'false';
console.log('{} ? is ', result12);
const value13 = new Set();
const result13 = value13 ? 'true' : 'false';
console.log('new Set() ? is ', result13);
const value14 = new Map();
const result14 = value14 ? 'true' : 'false';
console.log('new Map() ? is ', result14);
三、isEmpty(value)
isEmpty是lodash插件中提供的方法。判断的依据是除非是有枚举属性的对象,length 大于 0 的 arguments object, array, string 或类jquery选择器。
检查 value
是否为一个空对象,集合,映射或者set。
lodash.isEmpty | Lodash中文文档 | Lodash中文网
console.log('isEmpty(null)', isEmpty(null));
console.log('isEmpty(undefined)', isEmpty(undefined));
console.log('isEmpty(true)', isEmpty(true));
console.log('isEmpty(false)', isEmpty(false));
console.log('isEmpty(0)', isEmpty(0));
console.log('isEmpty(1)', isEmpty(1));
console.log('isEmpty(NaN)', isEmpty(NaN));
console.log('isEmpty("")', isEmpty(''));
console.log('isEmpty("abc123")', isEmpty('abc123'));
console.log('isEmpty([])', isEmpty([]));
console.log('isEmpty({})', isEmpty({}));
console.log('isEmpty(new Set())', isEmpty(new Set()));
console.log('isEmpty(new Map())', isEmpty(new Map()));