- Javascript 基础教程
- Javascript - 首页
- JavaScript - 路线图
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 启用
- JavaScript - 代码放置
- JavaScript - 语法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 注释
- JavaScript - 变量
- JavaScript - let 语句
- JavaScript - 常量
- JavaScript - 数据类型
- JavaScript - 类型转换
- JavaScript - 严格模式
- JavaScript - 保留关键字
- JavaScript 运算符
- JavaScript - 运算符
- JavaScript - 算术运算符
- JavaScript - 比较运算符
- JavaScript - 逻辑运算符
- JavaScript - 位运算符
- JavaScript - 赋值运算符
- JavaScript - 条件运算符
- JavaScript - typeof 运算符
- JavaScript - 空值合并运算符
- JavaScript - 删除运算符
- JavaScript - 逗号运算符
- JavaScript - 分组运算符
- JavaScript - Yield 运算符
- JavaScript - 展开运算符
- JavaScript - 幂运算符
- JavaScript - 运算符优先级
- JavaScript 控制流
- JavaScript - If...Else
- JavaScript - While 循环
- JavaScript - For 循环
- JavaScript - For...in
- Javascript - For...of
- JavaScript - 循环控制
- JavaScript - Break 语句
- JavaScript - Continue 语句
- JavaScript - Switch Case
- JavaScript - 用户定义迭代器
- JavaScript 函数
- JavaScript - 函数
- JavaScript - 函数表达式
- JavaScript - 函数参数
- JavaScript - 默认参数
- JavaScript - Function() 构造函数
- JavaScript - 函数提升
- JavaScript - 自执行函数
- JavaScript - 箭头函数
- JavaScript - 函数调用
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 闭包
- JavaScript - 变量作用域
- JavaScript - 全局变量
- JavaScript - 智能函数参数
- JavaScript 对象
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - Strings
- JavaScript - Arrays
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - Sets
- JavaScript - WeakSet
- JavaScript - Maps
- JavaScript - WeakMap
- JavaScript - 可迭代对象
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 标记模板
- 面向对象的 JavaScript
- JavaScript - 对象
- JavaScript - 类
- JavaScript - 对象属性
- JavaScript - 对象方法
- JavaScript - 静态方法
- JavaScript - 显示对象
- JavaScript - 对象访问器
- JavaScript - 对象构造函数
- JavaScript - 原生原型
- JavaScript - ES5 对象方法
- JavaScript - 封装
- JavaScript - 继承
- JavaScript - 抽象
- JavaScript - 多态
- JavaScript - 解构赋值
- JavaScript - 对象解构
- JavaScript - 数组解构
- JavaScript - 嵌套解构
- JavaScript - 可选链
- JavaScript - 全局对象
- JavaScript - Mixins
- JavaScript - 代理
- JavaScript 版本
- JavaScript - 历史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 异步
- JavaScript - 异步
- JavaScript - 回调函数
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任务
- JavaScript - Promise 化
- JavaScript - Promise 链式调用
- JavaScript - 定时事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 属性
- JavaScript - 删除 Cookie
- JavaScript 浏览器 BOM
- JavaScript - 浏览器对象模型
- JavaScript - Window 对象
- JavaScript - Document 对象
- JavaScript - Screen 对象
- JavaScript - History 对象
- JavaScript - Navigator 对象
- JavaScript - Location 对象
- JavaScript - Console 对象
- JavaScript Web API
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 鼠标事件
- JavaScript - 键盘事件
- JavaScript - 表单事件
- JavaScript - Window/Document 事件
- JavaScript - 事件委托
- JavaScript - 事件冒泡
- JavaScript - 事件捕获
- JavaScript - 自定义事件
- JavaScript 错误处理
- JavaScript - 错误处理
- JavaScript - try...catch
- JavaScript - 调试
- JavaScript - 自定义错误
- JavaScript - 扩展错误
- JavaScript 重要关键字
- JavaScript - this 关键字
- JavaScript - void 关键字
- JavaScript - new 关键字
- JavaScript - var 关键字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和属性
- JavaScript - DOM Document
- JavaScript - DOM 元素
- JavaScript - DOM 属性 (Attr)
- JavaScript - DOM 表单
- JavaScript - 修改 HTML
- JavaScript - 修改 CSS
- JavaScript - DOM 动画
- JavaScript - DOM 导航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 其他
- JavaScript - Ajax
- JavaScript - 异步迭代
- JavaScript - Atomics 对象
- JavaScript - Rest 参数
- JavaScript - 页面重定向
- JavaScript - 对话框
- JavaScript - 页面打印
- JavaScript - 验证
- JavaScript - 动画
- JavaScript - 多媒体
- JavaScript - 图像地图
- JavaScript - 浏览器
- JavaScript - JSON
- JavaScript - 多行字符串
- JavaScript - 日期格式
- JavaScript - 获取日期方法
- JavaScript - 设置日期方法
- JavaScript - 模块
- JavaScript - 动态导入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 浅拷贝
- JavaScript - 调用栈
- JavaScript - 引用类型
- JavaScript - IndexedDB
- JavaScript - Clickjacking 攻击
- JavaScript - 柯里化
- JavaScript - 图形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 性能
- JavaScript - 样式指南
JavaScript - for...in 循环
for...in 循环
JavaScript 中的 for...in 循环用于遍历对象的属性。JavaScript for...in 循环是 for 循环的一个变体。for 循环不能用于遍历对象属性。因此,引入了 for...in 循环来遍历所有对象属性。
由于我们还没有讨论对象,您可能对这个循环不太熟悉。但是,一旦您了解了对象在 JavaScript 中的行为,您就会发现这个循环非常有用。
JavaScript 中的 for...in 循环也可用于迭代数组的元素。但是,不建议这样做,因为这不如使用 for...of 循环有效。
语法
JavaScript 中 for...in 循环的语法如下所示:
for (variableName in object) { statement or block to execute }
参数
variableName - 它是对象的属性名称(键)。
in - 它是 JavaScript 中的“in”运算符。
object - 要遍历的对象。
在每次迭代中,object 中的一个属性被赋值给 variableName,并且此循环持续到对象的所有属性都遍历完为止。
示例
尝试以下示例以实现“for-in”循环。
示例:遍历对象属性
在下面的示例中,car 对象包含各种属性。我们使用 for…in 循环遍历对象的每个键。
在输出中,我们可以看到它打印了键及其值。我们使用 '[]'(成员运算符)从对象中访问键的值。
<html> <head> <title> JavaScript - for...in loop </title> </head> <body> <p id = "output"> </p> <script> let output = document.getElementById("output"); let car = { brand: "OD", model: "Q7", color: "Black", } for (key in car) { output.innerHTML += key + " -> " + car[key] + "<br>"; } </script> </body> </html>
输出
brand -> OD model -> Q7 color -> Black
示例:迭代字符串
在 JavaScript 中,字符串是一个对象。因此,我们可以使用 for…in 循环遍历字符串的每个字符。字符的索引是键,字符是值。
代码在输出中打印索引和字符。
<html> <head> <title> JavaScript - for...in loop </title> </head> <body> <p id = "output"> </p> <script> let output = document.getElementById("output"); let str = "Hello"; for (key in str) { output.innerHTML += key + " -> " + str[key] + "<br>"; } </script> </body> </html>
输出
0 -> H 1 -> e 2 -> l 3 -> l 4 -> o
示例:迭代数组
在 JavaScript 中,数组也是一个对象。因此,for…in 循环可用于遍历数组元素。像字符串一样,索引是键,数组元素是键的值。
以下代码在输出中打印数组索引及其值。
<html> <head> <title> JavaScript - for...in loop </title> </head> <body> <p id = "output"> </p> <script> let output = document.getElementById("output"); let array = ["Hi", "Hello", 900, 23, true, "JavaScript"]; for (key in array) { output.innerHTML += key + " -> " + array[key] + "<br>"; } </script> </body> </html>
输出
0 -> Hi 1 -> Hello 2 -> 900 3 -> 23 4 -> true 5 -> JavaScript
示例:更新对象的每个属性的值
在下面的示例中,我们遍历对象的每个键并将其值更新为 null。在输出中,代码打印了值为 null 的对象键。
因此,for…in 循环也可用于更新对象的所有或特定属性值。
<html> <head> <title> JavaScript - for...in loop </title> </head> <body> <p id = "output"> </p> <script> let output = document.getElementById("output"); let car = { brand: "OD", model: "Q7", color: "Black", } for (key in car) { car[key] = null; } output.innerHTML += "The updated object is - " + JSON.stringify(car); </script> </body> </html>
输出
The updated object is - {"brand":null,"model":null,"color":null}
示例:迭代浏览器的 Navigator 对象
尝试以下示例以实现“for-in”循环。它打印 Web 浏览器的 Navigator 对象。
<html> <body> <div id = "demo"> </div> <script> const output = document.getElementById("demo"); var aProperty; output.innerHTML = "Navigator Object Properties<br> "; for (aProperty in navigator) { output.innerHTML += aProperty; output.innerHTML += "<br>"; } output.innerHTML += "Exiting from the loop!"; </script> </body> </html>
输出
Navigator Object Properties vendorSub productSub vendor maxTouchPoints userActivation doNotTrack geolocation connection plugins mimeTypes pdfViewerEnabled webkitTemporaryStorage webkitPersistentStorage hardwareConcurrency cookieEnabled appCodeName appName appVersion platform product userAgent language languages onLine webdriver getBattery getGamepads javaEnabled sendBeacon vibrate scheduling bluetooth clipboard credentials keyboard managed mediaDevices storage serviceWorker wakeLock deviceMemory ink hid locks mediaCapabilities mediaSession permissions presentation serial virtualKeyboard usb xr userAgentData canShare share clearAppBadge setAppBadge getInstalledRelatedApps getUserMedia requestMIDIAccess requestMediaKeySystemAccess webkitGetUserMedia registerProtocolHandler unregisterProtocolHandler Exiting from the loop!