Область действия CoffeeScript - PullRequest
       2

Область действия CoffeeScript

2 голосов
/ 15 декабря 2011

Есть ли способ объявить переменную в области видимости файла (которая будет закрыта CS), не инициализируя ее?Придуманный пример:

init = ->
  counter = 0

inc = ->
  counter += 1

Это не сработает, потому что вам нужно объявить "counter".Добавление "counter = 0" в начало будет работать, но "= 0" не требуется.(Более реалистичный пример будет включать что-то, что обращается к DOM при загрузке страницы - нет способа правильно инициализировать это в области «файла».)

Ответы [ 3 ]

14 голосов
/ 15 декабря 2011

Вы должны будете определить его во внешней области, как вы упомянули.

counter = null
init = ->
  counter = 0
inc = ->
  counter += 1
4 голосов
/ 15 декабря 2011

Если ваши функции, где часть объекта, вы можете использовать @counter, например:

obj = 
  init: ->
    @counter = 0
  inc: ->
    @counter += 1
0 голосов
/ 17 декабря 2011

Вы можете сказать `var counter;` с обратными галочками, и это передается буквально через сгенерированный javascript.

Если у вас возникла такая проблема, посмотрите на сгенерированный javascript. Будет предельно ясно, что область видимости переменной лексически ограничена функцией.

Просмотр сгенерированного javascript часто является хорошим способом понять, как работает конструкция coffeescript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...