首先 - 我知道我应该使用 splice 从数组中删除元素以避免出现空格。
但我只是好奇。 indexOf 使用强类型(===),那么为什么它找不到 undefined index ?
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)
。
关于javascript - js。使用delete后的array.indexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763448/