前者这个主要是js自身的设计问题——块没有局部变量;下一版本可能用let解决。(我觉得设计上var 两次应该报错才对---edit:发现下一版本js就不允许let两次同一变量)。
后者是closure的问题,跟js关系不大吧——换个语言还不是如此?除非不用closure
【 在 nimi (泥股拉不二八雞) 的大作中提到: 】
: 由于js奇葩的scoping rule,扭曲的by-ref closure,javascript里的循环是坑人的,能不用就不用,很容易被坑。
: 可以看看coffeescript里的循环编译成什么样的javascript,比较复杂,这都是为了保证程序的正确性。
: 比如这个:
: ...................
--
修改:ottffsse FROM 218.197.83.*
FROM 218.197.83.*