JS。使用delete

时间:2015-09-24 14:03:40

标签: javascript

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

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

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);

1 个答案:

答案 0 :(得分:1)

解释这有点奇怪,但...... undefined既是又是状态

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

执行.indexOf()时,会搜索test_arr[1]没有价值。

对于有趣的实验,请尝试以下操作:test_arr[1] = undefined;,然后执行test_arr.indexOf(undefined)