2015-11-05 98 views
1

所有:如何引用變量outter範圍中的CoffeeScript

當我隨後在其官方網站的CoffeeScript教程,有一個例子:

outer = 1 
changeNumbers = -> 
    inner = -1 
    outer = 10 
inner = changeNumbers() 

等於:

var changeNumbers, inner, outer; 

outer = 1; 

changeNumbers = function() { 
    var inner; 
    inner = -1; 
    return outer = 10; 
}; 

inner = changeNumbers(); 

我想知道它如何在coffeescript中看起來如果我想從函數changeNumber訪問外部範圍的內部?

回答

2

changeNumber之前定義inner,coffeeScript不會將其視爲內部變量。例如:

outer = 1 
inner = 2 
changeNumbers = -> 
    inner = -1 
    outer = 10 
inner = changeNumbers() 

將編譯弄成這個樣子:

var changeNumbers, inner, outer; 

outer = 1; 

inner = 2; 

changeNumbers = function() { 
    inner = -1; 
    return outer = 10; 
}; 

inner = changeNumbers(); 

由於CoffeeScript的文件中提到,寫一個深度嵌套函數的時候,你要小心,你不重用意外的外部變量的名稱。

+1

謝謝,如果我不給內部任何價值會發生什麼? – Kuan

+0

好點。它不會工作。所以'inner'仍然會被聲明爲'changeNumbers'中的內部變量。不知道這種行爲是否打算。 – Jelle

+1

你總是可以寫'inner = undefined'或'inner = null'。 –