简体中文
web开发场景下,存在以下两种访问对象内部变量的方式:
ECMAScript 1999:开始支持 for...in 主要用于遍历对象的属性,迭代的是对象的所有可枚举属性(包括原型链中的属性)。
ECMAScript 2015:开始支持 for...of 主要用于遍历可迭代的数据结构(如数组、字符串、Set、Map 等),迭代的是集合中的每一个元素的值。它不会遍历对象的属性。
在原生开发场景下 Kotlin
和swift
均仅支持了 for..in 语法,不支持 for..of 语法
但原生的 for..in 的用法,与web 存在一定的差异。实际上对应的是web中的可迭代概念
各平台支持信息:
平台 | 可迭代 | 可枚举 |
---|---|---|
web | 支持(ECMAScript-2015) | 支持(ECMAScript-1999) |
kotlin | 支持 | 不支持 |
swift | 支持 | 不支持 |
各平台实现关键字:
平台 | 可迭代 | 可枚举 |
---|---|---|
web | for..of | for..in |
kotlin | for..in | 不支持 |
swift | for..in | 不支持 |
比如下面的代码
let a1 = [111,"222",false]
for(perItem in a1){
console.log("perItem",perItem)
}
Web 执行结果是
"perItem" "0"
"perItem" "1"
"perItem" "2"
Android 执行结果是
perItem [number] 111
perItem 222
perItem [boolean] false