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?
不是,JS是函数作用于,在函数里面的都算是一个scope,你在同一个scope中申明一个对象两次,在JS中是不推荐的。关键是你两个item的类型还不一样。
估计ts没这么智能哇,不过很奇怪,你两次申请了i,不知道报错没。
谢谢,原来我一定理解错了JS的变量作用域。
看到的童鞋,请看看以下博文会有收获。
http://www.cnblogs.com/rainman/archive/2009/04/28/1445687.html