欢迎光临
我们一直在努力

JavaScript | 数组中undefined与empty的区别

数组的空元素empty表示空位, 它不是一种数据类型, 而是由于人为修改arr.length 或者写入时多写了逗号造成的. 

var arr = [1,2,3,4,,,5];
arr.length; // 7

arr.length = 10;
arr; // [1, 2, 3, 4, empty × 2, 5, empty × 3]

undefined是一种数据类型, 在数组中表示这个位置的值未定义, 但它仍然指向某个内存地址, 这个内存地址指向的是undefined;

var arr = [1,2,3,undefined,4,5];
arr.length; // 6

empty和undefined在操作数组时的主要区别在于:

使用数组的forEach()方法遍历时会自动忽略空位, 而使用for循环则会将empty转换为undefined并遍历.

因此,当我们对数组通过for循环遍历时,会把空元素转换为underfind,如果我们不想要underfind,可以通过判断,并不为这项赋值。如果我们既不想要underfind,也不想要empty,可以通过push方法添加元素。

var arr = [2, 4, 6, , 8, 10];
var arr0 = [];
var arr1 = [];
var arr2 = [];
for (i = 0; i < arr.length; i++) {
arr0[i] = arr[i];
if (arr[i]) arr2.push(arr[i]);
if (arr[i]) arr1[i] = arr[i];
}
console.log(arr0); //包含underfind
console.log(arr1); //包含empty
console.log(arr2); //不包含empty
赞(0) 打赏
未经允许不得转载:散人研 » JavaScript | 数组中undefined与empty的区别
分享到: 更多 (0)

评论 抢沙发

7 + 9 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏