const arr = [0,undefined,3,'aa', 'b',6]
arr.filter(item => item||item === 0); // 正确 [0,3,'aa', 'b',6];
arr.filter(item => item||item === 0); // 错误 [3,'aa', 'b',6]; 因为0被转换成布尔值时为false;
不同类型转化为布尔值的关系
数据类型 | 转化为true | 转化为false |
---|---|---|
Boolean | true | false |
String | 非空字符串 | ’ '(空字符串) |
Number | 非零数值(包括无穷值) | 0,NaN |
Object | 任意对象 | null |
Undefined | 不存在 | undefined |