为了账号安全,请及时绑定邮箱和手机立即绑定

for(var i=0;i<5;i++)和for(i=0;i<5;i++)有什么区别?

for(var i=0;i<5;i++)和for(i=0;i<5;i++)有什么区别?

19990000 2017-08-28 22:10:36
如题如题如题!!!
查看完整描述

6 回答

?
我是新手_请多指教

TA贡献140条经验 获得超79个赞

前者比后者多一个var

查看完整回答
10 反对 回复 2017-08-29
已采纳
?
qq_安安_17

TA贡献49条经验 获得超52个赞

for(var i=0;i<5;i++){ //在方法内,用var声明了一个局部变量。方法结束,变量自动销毁。
    //do sth
}

for(i=0;i<5;i++){         /*在方法内,没有用var声明i。声明了一个全局变量,
    //do sth               方法内外都有效。但这种声明方法不提倡*/
}                            

//最好改为
var i;
for(i=0;i<5;i++){ 
    //do sth     
}

希望可以帮助你

查看完整回答
8 反对 回复 2017-08-29
  • 橋本奈奈未
    橋本奈奈未
    并不会自动销毁,var声明在for语句外依然可见,如果for语句是在全局作用域,var声明也是等同于声明全局变量
  • qq_安安_17
    qq_安安_17
    我说的是方法内的局部变量
  • 落叶1111
    落叶1111
    var 这里不一定是局部变量,也可以是全局变量
点击展开后面3
?
WingMeng

TA贡献32条经验 获得超13个赞

使用 var 声明的变量会自动被添加到最近的执行环境中。在函数内部,这个环境就是函数的局部环境,如果是外部,该变量就是全局变量,类似于不用 var 声明的变量。例如:

for (var i = 0; i < 5; i++) {  // i 是全局变量
    // do something
}
function func() {
    for (var j = 0; j < 5; j++) {  // j 是 func 函数内的局部变量
        // do something
    }
    for (k = 0; k < 5; k++) {  // k 是全局变量
        // do something
    }
}
console.log(i);  // 5
console.log(k);  // 5
console.log(j);  // 报错:j 未定义

在JS严格模式下,未声明的变量会报错。

查看完整回答
3 反对 回复 2017-08-29
?
落叶1111

TA贡献57条经验 获得超9个赞

在es5中是没有任何区别的,因为js没有块作用域,

查看完整回答
2 反对 回复 2017-08-29
?
攻城狮c

TA贡献6条经验 获得超7个赞

第二个你不用个类型 确定能运行吗?

查看完整回答
1 反对 回复 2017-08-29
?
橋本奈奈未

TA贡献436条经验 获得超108个赞

你是想问把var 放for里和外面的区别吗?如果是的话,那么我的回答是,只是位置不同而已,var声明存在变量提升,也就是说在for里var一个变量等同于在外面声明(ps:赋值操作扔在原代码位置),在for里声明变量只是习惯上的写法,本意是想声明局部变量(仅在for语句内可见),虽然并没有达到效果。ES6新增了let和const声明就可以实现定义局部变量

查看完整回答
1 反对 回复 2017-08-28
?
勿莣洎莪

TA贡献6条经验 获得超1个赞

前面是在循环里面定义的变量,后面的应该是在循环之前就初始了变量。

查看完整回答
反对 回复 2017-08-29
?
hundunhou

TA贡献1条经验 获得超0个赞

一个定义了变量 i 一个没定义 会报错

查看完整回答
反对 回复 2017-08-28
  • 6 回答
  • 0 关注
  • 6239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信