打算玩玩 CoffeeScript,改写之前代码,在闭包时遇到问题。 如:
var test = (function(){
var a, b
return {
i: function(){
a = 1
},
j: function(){
console.log(a)
}
}
})()
test.i()
test.j()
因为 CoffeeScript 里默认都为局部变量, 我尝试过用@,但必须与 this 绑定,而且实际应用中可能会有 function 的多层嵌套。
PS: 发现 a,b 置初始值即可解决作用域问题。 不过如果无须初始值,再像下面这么定义有些难看:
a = null
b = null
请问有没有更好的方法?