javascript - 为什么使用 JavaScript 后缀递增/递减运算符?
问题描述
我目前正在JavaScript.info学习 ES6 ,它说的是增量/减量运算符:
前缀形式返回新值,而后缀形式返回旧值(在递增/递减之前)...
如果我们想增加一个值并立即使用运算符的结果,我们需要前缀形式...
如果我们想增加一个值但使用它以前的值,我们需要后缀形式。
但是我很困惑,什么时候需要在变量增加后使用它的先前值?是否可以安全地假设无论它在哪里,这些都是边缘情况,并且++counter
几乎总是应该首选前缀形式,或者实际上有充分的理由证明后缀counter++
形式在野外更常见?
解决方案
但是我很困惑,什么时候需要在变量增加后使用它的先前值?
这个想法是(1)使用以前的值,然后(2)增加变量。例如,您可以像这样使用它:
let index = 0;
const obj1 = { id: index++ };
const obj2 = { id: index++ };
console.log(obj1);
console.log(obj2);
有时,这就是你所需要的。其他时候,您可能希望在增量完成后提取值,例如:
let highestIndexSoFar = 0;
const obj1 = { id: ++highestIndexSoFar };
const obj2 = { id: ++highestIndexSoFar };
console.log(obj1);
console.log(obj2);
console.log(highestIndexSoFar);
这取决于实际情况。两者都有自己的位置。
不过,另一种选择是避免它们,而是仅在表达式上下文之外作为独立语句递增 - 有些人可能会发现它更具可读性:
let highestIndexSoFar = 0;
highestIndexSoFar++;
const obj1 = { id: highestIndexSoFar };
highestIndexSoFar++;
const obj2 = { id: highestIndexSoFar };
console.log(obj1);
console.log(obj2);
console.log(highestIndexSoFar);
推荐阅读
- magento - 具有可下载选项的 Magento 2.2 可配置产品:电子邮件不包含下载链接
- ruby-on-rails - 无法使用 FactoryBot 在 Rspec 中建立 has_and_belongs_to_many 关系
- r - RStudio 连接服务器与 Power BI
- javascript - 异步问题,无法在 .then 之后运行 shelljs 命令
- java - 使用 ImageIO.read() 时忽略 Alpha 通道
- ddev - ddev v1.3.0 中的 ssh 客户端去哪儿了?
- java - 在 Linux 上使用 nohup for java 增加 cpu 使用率
- python - 使用 collections.Counter 获取嵌套列表(字符串)中出现次数最多的 5 个元素
- reactjs - 如何过滤每行的数据?使用搜索输入法,根据用户在 react.js 中输入的内容即时更新行
- wpf - datagrid 数据表绑定和设置特定单元格的工具提示和背景颜色