在《029_列表渲染》文中提到:
v-for="(item, index) of xxx"其中关于 of 分隔符 ,在网上也见到用 in 的,所以下面说说。
两种分隔符都合法
Vue 的 v-for 支持两种分隔符:
<!-- ✅ 使用 in(更常见,类 JS for...in 风格) -->
<li v-for="(item, index) in items" :key="item.id">{{ item }}</li>
<!-- ✅ 使用 of(类 JS for...of 风格,也完全合法) -->
<li v-for="(item, index) of items" :key="item.id">{{ item }}</li>
两者完全等价,Vue 官方文档也明确写了可以用 of 替代 in,更贴近 JavaScript 迭代器语法。
完整的标准格式
v-for="(当前项, 索引/键名) in/of 数据源" :key="唯一标识"| 部分 | 说明 |
|---|---|
v-for="..." |
指令声明 |
(item, index) |
解构出的变量,括号可选(单个参数可不加) |
in 或 of |
分隔符,二选一 |
items |
数据源(数组、对象、数字、可迭代对象) |
:key="yyy" |
必填的 key 绑定,用于 diff 优化 |
实际开发中哪种多?
绝大多数项目用 in,因为:
- Vue 官方教程和示例默认用
in - 早期版本只有
in,of是后来加的兼容写法 - 团队习惯延续
但如果你觉得 for...of 语义更清晰(迭代数组元素而非索引),完全可以用 of,没有任何问题。
注:
上面内容只是理论上探讨,我还没实际验证,有空的时候验证。
