javascript - js。使用delete后的array.indexOf

标签 javascript

首先 - 我知道我应该使用 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/

相关文章:

javascript - Electron-fetch将json作为[对象对象]返回,但网络控制台显示正在返回正确的json对象

javascript - TypeError : this. props.onDelete 不是函数

Javascript - 在新请求中使用先前请求中的数据

javascript - 如何使用 JQuery 仅删除 Style attr 的位置(顶部和左侧)?

javascript - 从数组中删除彼此范围内的对象

javascript - react-native 原生元素检测

javascript - 获取所选文件的文件大小 xp :fileUpload in CSJS

javascript - 如何使ChartJS中的Line不超过yAxes的最大值

javascript - firebase 有没有办法防止快速连续写入?

javascript - 使用javascript将用户添加到列表