有什麼辦法來聲明,在「文件」範圍(將由CS被閉包)變量,沒有初始化它?一個人爲的例子:CoffeeScript的變量範圍
init = ->
counter = 0
inc = ->
counter += 1
這將無法正常工作,因爲您需要聲明「計數器」。在頂部添加「counter = 0」會使其工作,但「= 0」是不必要的。 (一個更現實的例子會涉及一些訪問DOM在頁面加載 - 有沒有辦法在「文件」範圍正確初始化)
有什麼辦法來聲明,在「文件」範圍(將由CS被閉包)變量,沒有初始化它?一個人爲的例子:CoffeeScript的變量範圍
init = ->
counter = 0
inc = ->
counter += 1
這將無法正常工作,因爲您需要聲明「計數器」。在頂部添加「counter = 0」會使其工作,但「= 0」是不必要的。 (一個更現實的例子會涉及一些訪問DOM在頁面加載 - 有沒有辦法在「文件」範圍正確初始化)
你必須定義它的外域,因爲你提到的。
counter = null
init = ->
counter = 0
inc = ->
counter += 1
如果你的功能,其中一個對象的一部分,你可以使用@counter,像這樣:
obj =
init: ->
@counter = 0
inc: ->
@counter += 1
你可以說'變種計數器;`反引號與和通過字面傳遞到產生JavaScript的。
當你有這樣的問題,看看生成的JavaScript。這將是非常清楚的變量範圍在詞彙上侷限於該功能。
望着生成的JavaScript往往是一個很好的方式來理解什麼的CoffeeScript結構的行爲。
+1。 Shorthands已經被提出,但是jashkenas堅信'= null'語法。 –
我還沒有看到,但我想基本原理是保持低關鍵字計數。 – mahemoff