closure设计的本意就是capture住所返回函数的外部变量吧。这样的话,byVal和byRef是程序员的责任啊。
像你前面所提到的问题,完全可以每次循环时新建一个变量解决。
如果都是byVal, 那么1)若closure就是想记住上次的值怎么办?2)如果是大对象复制很耗内存怎么办?
【 在 nimi (泥股拉不二八雞) 的大作中提到: 】
: closure是从函数式编程(确切的说是从scheme)里面来的,那里面一般都不会使用变量,甚至根本就不能用变量。像ML里面,就算用了变量,closure的capture也是by value而不是by ref的,所以不会出这样的问题
: C++11里面的closure如果直接写也是by value,加上了&才是by ref
: 所以说,这个问题虽然其它语言也有,但是javascript是最严重的
--
修改:ottffsse FROM 218.197.83.*
FROM 218.197.83.*