为什么后递增/递减运算符对循环中的变量没有任何影响
Why doesn't a post-increment/decrement operator have any effect on a variable inside a loop?
var j = 0;
for( var i = 0; i < 100; i++){
j = j++;
console.log(j);
}
上述代码块的输出是 100 个零而不是从 1 到 100 的数字?
j = j + 1;
另一方面,上面的代码按预期工作。这背后的原因可能是什么?
j++
加载当前值j
,然后递增变量,然后返回原始值。
j = j++
在循环的每次迭代中将 j
的原始值 (0) 重新赋值回 j
。
如果你只是在循环中单独将j++;
放在一条线上,你会看到它确实增加了。
因为它是后增量而不是前增量。首先为 j
的值分配值零,然后递增为新值,该值在下一次迭代中被浪费。
j = j++
翻译为:
- 加载
j
的值,即零。 - 递增
j
. - 将加载的值存储在步骤 1 中以
j
。请注意,步骤 2 中的增量丢失,因为它的旧值是在步骤 1 中加载的。
j = ++j
翻译为:
- 递增
j
. - 加载递增的
j
值。 - 将加载的值存储回
j
。
您正在发布递增 j.At j = j++
值为 j = 0
并且它保持 0,因为j++
将在语句执行后递增该值。你可以只console.log(++j);
for 循环。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 如何获取保存在变量中的HTML代码的任何属性的值
- 使用jQuery获取任何变量的输入值
- 当输入为变量时,.replace.不执行任何操作
- 我可以't克服这个错误“;未定义的局部变量或方法`f'"任何原因
- 我使用谷歌标签管理器在我的网站上启动标签.变量“;未定义的“;在任何版本的Internet Explorer的自定义代码
- 查找任何未定义的变量并从url字符串中隐藏
- 确定是否在不使用任何全局变量的情况下加载了窗口
- 是否有任何方法可以访问外部范围's变量
- jQuery,如何测试一个变量是一个文本节点,不包含任何标记
- 如何将变量设置为给定时刻数组的值,而不是数组的任何值
- q 从 .then 函数分配给更高级别的作用域变量是否存在任何陷阱
- 如何从NodeJsServer的查询字符串中获取id或任何变量数据
- 如何将“n”定义为任何自然基数变量
- 是否有任何工具可以将 JavaScript 返工为每个函数表单一个变量
- 单击新插入的变量块中的关闭按钮时没有任何反应
- 这是检查变量是否被定义的最佳方法,而不是 null 并等于 “” 或其他任何内容
- JavaScript 数组操作,使任何索引作为变量来获取值
- 全局名称空间变量:任何备选方案
- AJAX没有在服务器上传递变量(任何AJAX)