首页 新闻 会员 周边

typescript对变量的作用域貌似有BUG

0
悬赏园豆:10 [已解决问题] 解决于 2016-02-04 17:45
var list: number[] = [2, 3, 4, 5];
for (var i = 0; i < list.length; ++i) {
    var item = list[i];
    console.log(item);
}

var names: Array<string> = ["jim", "mary"];
for (var i = 0; i < names.length; ++i) {
    var item = names[i];
    console.log(item);
}

 

在两次for循环里都有变量item,但显然这个item是for循环里的局部变量,但是,这个代码编译不过。

编译器提示item的数据类型声明冲突。

这是不是BUG?

iTonyDay的主页 iTonyDay | 初学一级 | 园豆:165
提问于:2016-02-04 16:56
< >
分享
最佳答案
1

不是,JS是函数作用于,在函数里面的都算是一个scope,你在同一个scope中申明一个对象两次,在JS中是不推荐的。关键是你两个item的类型还不一样。

估计ts没这么智能哇,不过很奇怪,你两次申请了i,不知道报错没。

收获园豆:10
幻天芒 | 高人七级 |园豆:37175 | 2016-02-04 17:16

谢谢,原来我一定理解错了JS的变量作用域。

看到的童鞋,请看看以下博文会有收获。

http://www.cnblogs.com/rainman/archive/2009/04/28/1445687.html 

iTonyDay | 园豆:165 (初学一级) | 2016-02-04 17:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册