# 数组长度是接受任意值,如何保持合法性

// Lodash中很多地方都出现以下代码
// 作用:根据传入的初始和结束索引求得要操作的数据元素长度
length = start > end ? 0 : ((end - start) >>> 0);

在JS中,Array.length是一个32位无符号整型的数字,而通过无符号位移运算>>>,就可以确保我们得到一个32-bit unsigned ints。

// 例如
-1 >>> 0    // 4294967295

0 >>> 0     // 0

'1' >>> 0   // 1

'1x' >>> 0  // 0

null >>> 0  // 0

对于异常情况的包容也可以让我们减少一些类型判断和显示的强制类型转化的操作。

因此,在有用到Array.length的场景,可用>>>0做参数防护。

最近更新时间: 2020/9/6 11:30:38