【发布时间】:2014-01-14 12:00:39
【问题描述】:
运行以下咖啡脚本始终会导致数组全部为假。 我的问题是“为什么?”
class A
probability: 0.5
gen: (f) -> f() for x in [0...10]
init: -> alert @gen -> Math.random()<@probability
constructor: -> @init()
new A
这与以下几乎相同的脚本形成对比, 它通常返回真假混合,
class B
gen: (f) -> f() for x in [0...10]
init: -> alert @gen -> Math.random()<0.5
constructor: -> @init()
new B
如下
probability = 0.5
gen = (f) -> f() for x in [0...10]
init = -> alert gen -> Math.random()<probability
init()
还有以下
gen = (f) -> f() for x in [0...10]
init = -> alert gen -> Math.random()<0.5
init()
为什么第一个脚本的行为与其他脚本不同,尤其是第二个? 当然,将概率参数保留为变量很有用。
我是否遗漏了一些关于闭包的内容? 谢谢!
【问题讨论】:
标签: javascript coffeescript functional-programming closures