2013-02-23 4 views
2

Я играл с CoffeeScript, и я использовал js2coffee для экспериментов. Одна вещь, которую я заметил, это то, как CoffeeScript обрабатывает переменную инициализацию. Это CoffeeScript:Инициализация переменной CoffeeScript: почему?

string = 'word'

компилирует к этому JavaScript:

var string; 
string = 'word'; 

Что такое преимущество var string; декларации? Почему не

var string = 'word';

+0

Я не думаю, что есть какая-то польза; какой компилятор вы использовали? –

+0

'js2coffee' просто позволяет вам вводить код CoffeeScript и динамически компилируется в режиме реального времени JavaScript. Проверьте это. – nickcoxdotme

+0

попробуйте другой компилятор. Это, вероятно, не оптимизирует –

ответ

5

coffeescript компилируется в jslint-совместимый javascript и помещает все объявления переменных в верхнюю часть текущей области/функции.

3

Преимущество, в том, что все переменные, используемые в объеме могут быть объявлены вместе в верхней части рамки с var, то используется/назначен позже ...

var myThing, myOtherThing; 

myThing = "a good thing"; 

... etc ... 
+0

Вот как именно выглядит код и что делает, но это определенно не «преимущество». Не могли бы вы объяснить, почему это предпочтительнее для заявлений на лету? – sheac

+2

@sheac - это преимущество с точки зрения анализа кода, поэтому его легко увидеть в начале области действия, какие переменные используются в пределах области действия. Это может помочь вам обнаружить дублирование - там, где вы, возможно, использовали две или более переменных для одной и той же цели, а также четко показывает вам, к какой области относится переменная, используемая внутри. –

Смежные вопросы