var s = [
{name: 'arron'},
{name: 'arron'}
]var t = { name: 'arron', age: 23}for( x in s ) { console.log(typeof x)
}for( x in t ) { console.log(typeof x)
}// 结果输出的类型都是string.不是很理解这个类型为何是string,之前一直以为是Number类型的,特别是数组遍历的时候,求教
1 回答

呼唤远方
TA贡献1856条经验 获得超11个赞
第一,你在遍历数组使用的是in
,遍历出的是数据的索引,1,2
,而且,JavaScript中规定,数组和对象的键名都是字符串,因此你遍历出的索引1,2
都是字符串,也就是"1","2"
,所以输出的类型都是string。
第二,你在遍历对象也是一样,遍历出的是对象的属性名,属性名也是字符串,所以输出的类型也是string,应该typeof t[x]
才是你想要的结果。
第三,数组遍历推荐使用普通的for
因为数组是内建对象,in
操作符会遍历数组的其他属性,如
var arr = [1,2,3]; arr.a = "str";for(i in arr){ console.log(arr[i]); // 1,2,3,str}
添加回答
举报
0/150
提交
取消