怎么写才能符合规范?

今天写了这个,说不符合规范

arr.map(i => ({ name: i.username }))
说这个i不能这么用,要用item,有没有道理,说i一般表示循环的值,比如说for里面的i变量

阅读 2.7k
6 个回答

i 确实常用于循环变量,但是它的原意是 integer,也就是整数。毕竟循环变量通常都是整数。并由此衍生出了 jk 等。

对 arr 进行循环的时候,如果用普通 for 循环,使用 i 一般是允许的

for (var i = 0; i < arr.length; i++) { ... }

甚至用 for ... in 循环也可以,毕竟是循环的 key,而 key 之于数组,就是 index,索引,简写 i 也没毛病。

for (var i in arr) { ... }

但是用 for ... of 的时候,由于循环变量表示的是 arr 的元素,也就是 element 或者 item,所以可以用 element, el, item, it 等。看起来用 i 也没毛病,但毕竟多数情况下 i 已经约定成了整数,所以这里用 i 容易产生歧义 —— 到底是 index 还是 item 呢?

forEach 也是一样,它的回调只有一个参数的时候,表示的是 item,如果有第 2 个参数,第 2 个参数是 index,所以一般会这样写:

arr.forEach((item, index) => { ... })

或者简写

arr.forEach((it, i) => { ... })

你看,如果直接用 i 来表示 item 的话,很容易被理解为 index,那可就不太对了。

是上司的话你忍忍吧🤣
可以这样写,无懈可击:

arr.map(({ username: name }) => ({ name }))

命名尽量用驼峰命名法
表如:

arr.map(item => {
   name: item.ueserName
})

其实你那么写也没有错,但是最好按照组里写代码的规范去写吧

本来就只是一个形参,英语能表达它的含义就行了,我还习惯用v呢,代表value。

而具体遍历的对象不同,可能又会有区别,也不一定就是千篇一律的。比如遍历的components,
也可以用c,代表component。当你存在嵌套循环的时候,肯定也会用两个不同的命名来表示。

所以这里的规范其实并不能叫强制性规范,应该属于最佳实践或者比较优秀的处理方式。

关于这点,如果你写item,value,target...都能表达出相近的意思,你写这些的话,还可以和上级掰扯掰扯。不过i确实一般理解为index之类的,你这个就有点脱离群众了~

折中一下,我就比较喜欢用 it

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题