js.数组中.使用delete后的indexOf

js. array.indexOf after using delete

本文关键字:后的 indexOf delete 使用 数组 js      更新时间:2023-09-26

首先,我知道我应该使用splice从数组中删除元素,以避免出现空格。

但我只是好奇。indexOf使用强类型(===),所以为什么它找不到未定义的索引?

var test_arr = [1, 2, 3];
delete test_arr[1];
console.log('indexOf', test_arr.indexOf(undefined));
console.log('check by index:', test_arr[1] === undefined);

这解释起来有点奇怪,但是…undefined既是,又是状态

当您执行delete test_arr[1];时,您正在删除该索引。test_arr[1]不再存在,它没有定义。当您尝试访问它时,您将返回值undefined,因为它的状态

当您执行.indexOf()时,它搜索test_arr[1]没有值

做一个有趣的实验,试着这样做:test_arr[1] = undefined;,然后再做test_arr.indexOf(undefined)