js.数组中.使用delete后的indexOf
js. array.indexOf after using delete
首先,我知道我应该使用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)
。
相关文章:
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 创建新属性后的 JSON 空属性
- 动画完成后的TweenMax
- 在Rails中更新Div,而不更改更新请求后的视图
- 将处理后的图像上传到服务器
- RegEx JavaScript:数字后的符号提取
- 附加后的即时加载
- 加载后的页面与ajax表单提交不起作用
- 页面加载后的Ajax调用
- 页面更改后的剑道网格事件
- 使用jQuery只返回选中复选框后的第一个表单元格值
- 如何进行sequialize更新以返回更新后的对象
- 使用JAVASCRIPT转换货币.可以't通过我的函数设置转换后的输入文本字段的值
- Selenium驱动程序不反映单击()后的页面更改
- 变量dos'即使我可以返回更新后的值,也不会改变
- PJAX请求完成并下载资产后的回调
- 赋值后的回调函数
- 确定用户按下键(onKeyUp)后的时间量
- JQGrid使用服务器编辑后的更新数据刷新数据
- js.数组中.使用delete后的indexOf