1
agagega 2018-08-05 00:48:47 +08:00
this 的 dynamic scoping 是受了一部分 lisp 方言的影响(逃
另外很多人吐槽类似 var arr = [] for (var i = 0; i < 5; i++) { arr.push(function(){console.log(i)}) } arr.forEach(function(fn){fn()}) 结果输出 5 个 5 这样的设计。其实在 Python 和 Ruby 中也有这样的问题。不过如果换成类似 Ruby 中 arr = [] (0...5).each do |i| arr.push(lambda { puts i }) end arr.each(&:call) 就可以了。所以循环和闭包混用本来就容易出事(逃 |
2
lolizeppelin 2018-08-05 02:57:32 +08:00 via Android
erlang 就没事 貌似纯正的函数式编语言都没问题
|