for的区别.In和for循环,以及counter声明
difference between for..in and for loops, and counter declaration
for
循环的实现之间的差异(速度,性能,副作用,…):
var i;
for(i = 0; i < length; i++){ //Do something}
// more code
和
for(var i = 0; i < length; i++){ //Do something}
// more code
和
for(i = 0; i < length; i++){ //Do something}
// more code
和
var e;
for( e in array){ //Do something}
// more code
和
for(var e in array){ //Do something}
// more code
和
for(e in array){ //Do something}
// more code
没有区别。
JavaScript变量只有函数作用域,虽然你可以在for
循环的初始化部分中放置var
语句,但实际上声明被"提升"到作用域的顶部,这样当你的第二个例子运行时,它们就像第一个例子一样被处理。
EDIT:由于您在我回答后更新了问题,因此您添加的第三种语法不使用var
关键字意味着变量i
(或e
)将被创建为全局变量-除非它已经作为全局变量存在,在这种情况下现有变量将被覆盖。全局变量访问比局部变量访问慢。
注意:我对这个问题的解释是,它不是比较标准的for循环和for..in变量,它只是比较标准for循环的不同变量声明方法,然后再对for..in循环做同样的事情。
与计数器变量的声明没有区别。
但是总是用
var
否则会污染javascript已经很脏的全局作用域…
至于for...in
与传统for
看这里…
(这是我对重复问题的回答…)
是的,javascript中的for循环和for/in循环是有区别的。以下是不同之处
考虑这个数组
var myArr = ["a", "b", "c"];
之后,我将一个元素添加到这个数组中,但是以不同的方式,如下所示:
myArr[myArr.length + 1] = "d";
此时,如果输入console.log
,这就是数组的样子["c", "b", "a", undefined × 1, "d"]
现在,让我们使用for和for/in循环遍历数组,看看有什么区别:首先,让我们试试for循环
for(var i = 0; i != myArr.length; i++) { // note, i used " != " instead of " < ". Yes this is faster.
console.log(myArr[i]);
}
// output will look like this:
// "a"
// "b"
// "c"
// undefined × 1
// "d"
// - This still shows the undefined value in the array.
现在,让我们看看for/in循环
for(key in myArr) {
console.log(myArr[key]);
}
// array will look like:
// "a"
// "b"
// "c"
// "d"
// This will skip the undefined value.
区别1:当使用for/in循环时,javascript解释器将跳过所有null或未定义的值。此外,如果遇到原始值,for/in循环将把所有值转换为其等效的包装器对象。而for循环则不这样做。
差异2:当使用for循环时,我们在循环中声明了变量i,如果for循环是在函数中编写的,则该变量将在函数中作用域。这意味着,直到函数结束,变量i仍然是可用的,即使在for循环之外,但在该函数内。在for/in循环的情况下,"key"变量的作用域在for/in循环停止执行后立即消失,这意味着内存占用更少。
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Is onfling available for html, html5
- Setting default onclick behavior for <img> tag in gene
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 是“;x==a||b”;以及“;x==a||x==b”;JavaScript中的等效语句
- 在react for标记名称中抛出一个函数,以及如何调试该函数
- 基于 Javascript 的嵌套 for 循环以及对象
- for循环与forEach在javascript中的性能以及jsperf结果的可信度
- for循环为什么以及何时忽略具有html集合的某些项
- for的区别.In和for循环,以及counter声明
- jQuery中使用回调函数的for循环,以及如何避免它们
- 带有两个计数器的For循环,以及令人困惑的if-else语句
- 使用for循环在数组中查找字符串是有效的,但是这里的forEach()不起作用.为什么以及如何纠正
- 如何在javascript中使用for循环,以及如何在css中调用
- JavaScript's for每个循环决定跳过或遍历“s”;未定义的“;以及“;空”;数组中的元素