关于in运算符

我是一枚JS小白,今天看犀牛书,看到4.9.3章节的in运算符的时候,有个例子

var data=[7,8,9];
"0" in data //=>true:数组包含元素"0"
1 in data //=>true:数字转换为字符串
3 in data //=>false:没有索引为3的元素

就是“0” 和 1 为什么结果会是true呢?数组里面并不包含"0"和1啊,但是我自己用JS实际测试了后,书上的例子是正确的,百思不得骑姐,求前辈解惑

阅读 1.8k
2 个回答

in遍历的是对象的key数组是一种特殊的对象

在遍历中,实际上keyString类型in遍历会隐式调用toString()方法来转换key,所以"0"是"0"1会转换成"1"

测试代码如下:

var data=[7,8,9];
var key;
for(key in data) {
  console.log('key:', key, '-type: ', typeof key);
}

输出结果如下:

key: 0 -type:  string
key: 1 -type:  string
key: 2 -type:  string

in 检测的是 key 。var data=[7,8,9]; 所以 key 是 0,1,2

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题