猿问

今天在工作中碰到一个JS中 for ...in 的问题

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类型的,特别是数组遍历的时候,求教


PIPIONE
浏览 507回答 1
1回答

呼唤远方

第一,你在遍历数组使用的是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}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答