以下代码:
inc = -> value = (value ? 0) + 1
dec = -> value = (value ? 0) - 1
print = -> console.log value ? 0
如何使这项工作正常运行,inc
和dec
靠近value
而不是创建单独的函数局部变量,而不是明确指定某些内容到value
?
在普通的Javascript中,您只需在外部范围声明var value
:
var value;
function inc() { value = (value || 0) + 1; };
function dec() { value = (value || 0) - 1; };
function print() { console.log(value || 0); };
对于完全相同的事情,CoffeeScript的方式是什么?
答案 0 :(得分:2)
在CoffeeScript中, 引入本地变量的方式是将分配给适当范围内的变量。
这就是CoffeeScript的定义方式,因此类似于Python或Ruby,它不需要"变量声明",但CoffeeScript也允许转发访问。副作用是one cannot shadow a lexical variable。
就像在JavaScript中放置var
一样,其中完成此分配(只要它在正确的范围内)不会影响变量的范围。< / p>
鉴于
x = undefined
f = -> x
// JS
var f, x;
x = void 0;
f = function() {
return x;
};
鉴于
f = -> x
x = undefined
// JS
var f, x;
f = function() {
return x;
};
x = void 0;