首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在for循环中声明i时使用var

在for循环中声明i时使用var
EN

Stack Overflow用户
提问于 2015-03-29 00:38:13
回答 4查看 330关注 0票数 1

我看到Javascript代码使用了两种不同的方法来定义for循环。

代码语言:javascript
运行
复制
for (var i=0;i < x.length; i++)

但它也是

代码语言:javascript
运行
复制
for (i=0; i < x.length; i++)

同样的事情也发生在for-in循环中。

代码语言:javascript
运行
复制
for (var i in x)

代码语言:javascript
运行
复制
for (i in x)

i声明为var与只说i有什么区别吗?做一个比另一个好吗?这样做是正确的吗?据我所知,他们的行为都是一样的,但肯定有一些不同。

注意:我不是在问for-infor (i=0)之间的区别

EN

Stack Overflow用户

回答已采纳

发布于 2015-03-29 00:41:13

如果函数中没有var声明,则对i的引用将指向全局对象的i属性。如果for循环主体中的代码调用也修改全局i的代码(例如,在被调用的方法中),则可能会发生各种不可预测的行为。

注意,在var i循环初始化中声明for

代码语言:javascript
运行
复制
for (var i = ...)

等于在var i;循环之前声明for

代码语言:javascript
运行
复制
var i;
for (i = ...)

特别是,i的声明将是吊起到封闭作用域的顶部。

编辑:如果启用严格模式,则必须声明循环变量(实际上是所有变量)。引用没有用var语句声明的变量将导致抛出ReferenceError (而不是导致全局变量的存在)。

票数 3
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29324332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档