Изучаем CoffeeScript. Функции.
Всем привет! В этой статье мы поговорим о том, как создавать и использовать функции в языке программирования coffeescript.
Итак, давайте напишем функцию приветствия сначала на javascript, а потом на coffeescript, чтобы вы сразу увидели разницу.
var greet;
greet = function(name) {
return 'Hello, ' + name + '!';
};
Та же самая функция в coffeescript будет выглядеть вот так:
greet = (name) -> 'Hello, #{name}!'
Как видите, все значительно проще. Сначала в круглых скобках идут аргументы, затем стрелочка, затем тело функции. Если же вам не нужны аргументы, то вы вообще можете не писать их, и тогда функция будет выглядеть вот так:
greet = -> 'Hello, Sergey!'
В скомпилированном javascript вы можете увидеть, что функция всегда возвращает значение последнего выражения. Т.е. в нашем случае с приветствием она будет выглядеть так:
var greet;
greet = function(name) {
return 'Hello, ' + name + '!';
};
Хотя мы нигде не писали ключевого слова return в coffeescript! Давайте теперь изменим функцию в coffeescript и посмотрим, что получится в скомпилированном javascript, чтобы это все было нагляднее
greet = (name) ->
do updateSomething
do changeSomething
'Hello, #{name}!'
do processSomething
В итоге получим следующее:
var greet;
greet = function(name) {
do updateSomething();
do changeSomething();
'Hello, ' + name + '!';
return processSomething();
};
На самом деле, это ни на что не влияет, вы можете просто игнорировать этот возврат, если он вам не нужен. Однако, если все-таки вам очень нужно убрать его из скомпилированного кода, то просто добавьте пустой return в конце.
greet = (name) ->
'Hello, #{name}!'
return
Естественно, вы можете прописывать стандартные значения для аргументов точно так же, как и в javascript
greet = (name = 'Sergey') -> 'Hello, #{name}!'
Теперь поговорим о том, что делать, если наша функция должна принимать неопределенное количество аргументов. В javascript для этого используется объект arguments, в coffeescript же все намного проще.
normalize = (length, vectors...) -> 'something here...'
Как вы можете видеть, все, что нам нужно сделать, это просто добавить три точки, что будет значить, что все следующие аргументы после второго будут записаны в массив vectors.
Теперь об областях видимости: var писать не нужно, внутри функции любая переменная считается локальной в том случае, если переменная с таким именем не была объявлена раньше.
outer = 10
func = ->
outer = 10
inner = 10
return
В результате получим следующее:
var func, outer;
outer = 10;
func = function() {
var inner;
outer = 10;
inner = 10;
};
Вызывать функции можно без круглых скобок. При вложенных вызовах параметры будут оборачиваться справа налево.
show() // show()
do show // show()
show update object // show(update(object))
Теперь рассмотрим анонимные самовызывающиеся функции. Как вы уже знаете, все функции в coffeescript анонимные и все, что вам нужно сделать, чтобы получить анонимную самовызывающуюся функцию, как в языке javascript, это написать впереди ключевое слово do
do -> do something
В результате получим следующее:
(function() {
return something();
})();
Итак, на этом все! Спасибо за внимание!
-
- Михаил Русаков
Комментарии (1):
Доброго времени! Почему бы не записать по этому языку видеоурок. Или уже записывается? С уважением Gorbunko.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.