CoffeeScript - Funkcje

Funkcja to blok kodu wielokrotnego użytku, który można wywołać w dowolnym miejscu programu. Eliminuje to konieczność wielokrotnego pisania tego samego kodu. Pomaga programistom w pisaniu kodów modułowych.

Funkcje pozwalają programiście podzielić duży program na szereg małych i łatwych do zarządzania funkcji.

Ogólnie używając JavaScript możemy zdefiniować dwa typy funkcji - named functions, zwykłe funkcje z treścią nazwy funkcji i Function expressions. Korzystając z wyrażeń funkcyjnych, możemy przypisywać funkcje do zmiennych.

//named function
function sayHello(){
   return("Hello there");
}
 
//function expressions
var message = function sayHello(){
   return("Hello there");
}

Funkcje w CoffeeScript

Składnia funkcji w CoffeeScript jest prostsza w porównaniu z JavaScriptem. W CoffeeScript definiujemy tylko wyrażenia funkcyjne.

Plik functionsłowo kluczowe zostało wyeliminowane w CoffeeScript. Aby zdefiniować tutaj funkcję, musimy użyć cienkiej strzałki (->).

W tle kompilator CoffeeScript konwertuje strzałkę na definicję funkcji w JavaScript, jak pokazano poniżej.

(function() {});

Korzystanie z rozszerzenia nie jest obowiązkowe returnsłowo kluczowe w CoffeeScript. Każda funkcja w CoffeeScript automatycznie zwraca ostatnią instrukcję w funkcji.

  • Jeśli chcemy wrócić do funkcji wywołującej lub zwrócić wartość, zanim dojdziemy do końca funkcji, możemy użyć return słowo kluczowe.

  • Oprócz funkcji in-line (funkcji, które są w jednym wierszu), możemy również definiować funkcje wielowierszowe w CoffeeScript. Dzięki wyeliminowaniu nawiasów klamrowych możemy to zrobić zachowując odpowiednie wcięcia.

Definiowanie funkcji

Poniżej znajduje się składnia definiowania funkcji w CoffeeScript.

function_name = -> function_body

Przykład

Poniżej podano przykład funkcji w CoffeeScript. Tutaj stworzyliśmy funkcję o nazwiegreet. Ta funkcja automatycznie zwraca zawartą w niej instrukcję. Zapisz go w pliku o nazwiefunction_example.coffee

greet = -> "This is an example of a function"

Skompiluj go, wykonując następujące polecenie w wierszu polecenia.

c:\>coffee -c function_example.coffee

Podczas kompilacji generuje następujący kod JavaScript. Tutaj można zauważyć, że kompilator CoffeeScript automatycznie zwrócił wartość ciągu w nazwie funkcjigreet().

// Generated by CoffeeScript 1.10.0
(function() {
  var greet;
  
  greet = function() {
    return "This is an example of a function";
  };

}).call(this);

Funkcje wieloliniowe

Możemy również zdefiniować funkcję z wieloma wierszami, zachowując wcięcia zamiast nawiasów klamrowych. Ale musimy być spójni z wcięciem, które wykonujemy dla linii w funkcji.

greet =  ->
  console.log "Hello how are you"

Podczas kompilacji powyższy CoffeeScript daje następujący kod JavaScript. Kompilator CoffeeScript przechwytuje treść funkcji, którą oddzieliliśmy za pomocą wcięć i umieściliśmy w nawiasach klamrowych.

// Generated by CoffeeScript 1.10.0
(function() {
  var greet;

  greet = function() {
    return console.log("Hello how are you");
  };

}).call(this);

Funkcje z argumentami

Możemy również określić argumenty w funkcji za pomocą nawiasów, jak pokazano poniżej.

add =(a,b) ->
  c=a+b
  console.log "Sum of the two numbers is: "+c

Kompilując powyższy plik CoffeeScript, wygeneruje następujący JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var add;

  add = function(a, b) {
    var c;
    c = a + b;
    return console.log("Sum of the two numbers is: " + c);
  };

}).call(this);

Wywołanie funkcji

Po zdefiniowaniu funkcji musimy wywołać tę funkcję. Możesz po prostu wywołać funkcję, umieszczając nawias po jej nazwie, jak pokazano w poniższym przykładzie.

add = ->
  a=20;b=30
  c=a+b
  console.log "Sum of the two numbers is: "+c  
add()

Podczas kompilacji powyższy przykład daje następujący kod JavaScript

// Generated by CoffeeScript 1.10.0
(function() {
  var add;

  add = function() {
    var a, b, c;
    a = 20;
    b = 30;
    c = a + b;
    return console.log("Sum of the two numbers is: " + c);
  };
  add();
}).call(this);

Po wykonaniu powyższego kodu CoffeeScript generuje następujące dane wyjściowe.

Sum of the two numbers is: 50

Wywoływanie funkcji z argumentami

W ten sam sposób możemy wywołać funkcję z argumentami, przekazując je do niej, jak pokazano poniżej.

my_function argument_1,argument_2
or
my_function (argument_1,argument_2)

Note - Podczas wywoływania funkcji przez przekazywanie do niej argumentów użycie nawiasów jest opcjonalne.

W poniższym przykładzie utworzyliśmy funkcję o nazwie add() który akceptuje dwa parametry i wywołaliśmy go.

add =(a,b) ->
  c=a+b
  console.log "Sum of the two numbers is: "+c
add 10,20

Podczas kompilacji powyższy przykład daje następujący kod JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var add;

  add = function(a, b) {
    var c;
    c = a + b;
    return console.log("Sum of the two numbers is: " + c);
  };

  add(10, 20);

}).call(this);

Podczas wykonywania powyższego kodu CoffeeScript generuje następujące dane wyjściowe.

Sum of the two numbers is: 30

Argumenty domyślne

CoffeeScript obsługuje również domyślne argumenty. Możemy przypisać wartości domyślne do argumentów funkcji, jak pokazano w poniższym przykładzie.

add =(a = 1, b = 2) ->
  c=a+b
  console.log "Sum of the two numbers is: "+c
add 10,20

#Calling the function with default arguments
add()

Podczas kompilacji powyższy CoffeeScript generuje następujący plik JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var add;

  add = function(a, b) {
    var c;
    if (a == null) {
      a = 1;
    }
    if (b == null) {
      b = 2;
    }
    c = a + b;
    return console.log("Sum of the two numbers is: " + c);
  };

  add(10, 20);
  add()

}).call(this);

Po wykonaniu powyższego kodu CoffeeScript generuje następujące dane wyjściowe.

Sum of the two numbers is: 30
Sum of the two numbers is: 3