在循环中声明的变量和重用的变量会发生什么
What happens to variables declared in loops and the re-used
在javascript变量只有函数作用域。因此,它要么是全局变量,要么是在整个函数中可访问的变量,而不管在声明的位置(在函数中)。
我猜最佳实践是在'use strict';
之后的顶层声明所有变量?
如果我有5个循环,我声明相同的i
var会发生什么?
for (var i = 0; i < someValue; i+=1) { ... }
变量只是重置为0或任何循环设置它的初始值,一切继续?这会引起并发症吗?
可以看到,在for
循环开始时,i
被设置为0
: i = 0
。var i
部分被提升到函数的顶部,每个额外的var i …
重新声明 i
, i = 0
部分重新定义它。重新声明是不必要的,并且会使代码不那么干净(JSHint会警告你这一点)。
如果以后在任何循环之外使用i
,则将i
设置为for
循环对其所做的操作。
for(var i = 0; i < 4; i++){
/*
As the last few steps i is incremented (i == 4),
then it is checked with (i < 4), which is false; the loop is done.
*/
//…
}
i; // 4
因为你通常会在循环的开头重新定义每个迭代变量,所以这不会导致任何其他问题。
然而,为了更简洁的代码,明智的做法是每个循环使用一个变量,或者使用let
变量,而不是var
变量,因为let
变量的作用域仅为for
循环块:
for(let i = 0; i < 20; i++){
// …
}
for(let i = 0; i < 10; i++){ // This is fine.
// …
}
let
变量仅在兼容ecmascript -6的浏览器中可用,并且在Firefox中需要版本选择。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 什么是&&在没有if的行中的变量之间
- 什么'它的意思是当一个变量位于括号外时
- 在Javascript中重新分配对象变量时,原始对象会发生什么
- 未设置变量的赋值| jQuery的作用是什么
- 在Javascript中,变量前面的+运算符是什么
- 在javascript中,在变量名之前使用var有什么区别/优势吗
- 什么's;var'声明的变量和'这'在Javascript中创建了属性
- 当我想发布一个变量但有 1 个 js 时,ajax post 的解决方案是什么
- 有什么区别!!变量和变量
- 返回多个变量的 JavaScript 函数:数组与对象.最佳实践是什么
- JavaScript 构造函数中的“var”变量会发生什么
- 在 HTML 中显示变量的好做法是什么?
- 什么's是处理多个js文件之间交互的简单方法,同时避免溢出全局变量
- javascript中if(变量)的确切否定是什么
- jQuery变量$$符号是什么意思
- 将密码存储在Javascript变量中的安全含义是什么
- 闭包中的本地变量从外部更改.这是一个javascript错误,或者我做错了什么
- 如果我不这样做会发生什么;t在javascript中的变量中分配新的Image
- 通过Javascript传递带参数的变量:什么是undefined