[].map(() => console.log('1111'));
这段log会打印出来吗?还是会报错? 答案是不会打印出来,不会报错,如果你已懂得其原理,可以右上角了。
当时同事问我为什么没有报错时,我也一脸懵逼。其实MDN上已经明确写了:
也就是说,没有值不会触发callback,注意undefined,null,''也算有值。
为了验证,看如下代码:
const a = [1, ,3].map((item,index) => {
console.log(item, index);
return item;
});
console.log(a);
结果:
可以看出第二次的log没有打印出来,因为数组中第二个元素不存在,没有触发callback。因此空数组可以看出没有元素,所以不会触发callback。
a.length > 0 && a.map(() => {})
以上这种写法可以不用写来判断空数组了。