Функции TypeScript
Функция — это группа инструкций, которые вместе выполняют задачу.
Вы можете разделить свой код на разные функции. Как распределить код между разными функциями — решать вам, но логически разделение обычно основано на том, что каждая функция выполняет определённую задачу.
Объявление функции сообщает компилятору имя функции, тип возвращаемого значения и параметры. Определение функции предоставляет фактическое тело функции.
Определение функции
Функция — это блок кода, заключённый в фигурные скобки, перед которым стоит ключевое слово function:
Синтаксис выглядит так:
function function_name()
{
// 执行代码
}
Пример
TypeScript
Вызов функции
Функция может выполнить код внутри себя только при вызове.
Синтаксис выглядит так:
function_name()
Пример
TypeScript
Возвращаемое значение функции
Иногда мы хотим, чтобы функция возвращала результат своего выполнения в то место, откуда она была вызвана.
Это можно сделать с помощью оператора return.
Когда используется оператор return, функция прекращает выполнение и возвращает указанное значение.
Синтаксис выглядит так:
function function_name():return_type {
// 语句
return value;
}
return_type — это тип возвращаемого значения.
После ключевого слова return следует результат, который нужно вернуть.
Как правило, функция имеет только один оператор return.
Тип возвращаемого значения должен соответствовать типу возврата (return_type), определённому в функции.
Пример
TypeScript
В примере определена функцияgreet(), и тип возвращаемого значения — string.
greet()Функция возвращается в место, откуда была вызвана, через оператор return, то есть в переменную msg, а затем выводит возвращаемое значение.
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Функции с параметрами
При вызове функции вы можете передавать ей значения, и эти значения называются параметрами.
Эти параметры можно использовать внутри функции.
Вы можете передать функции несколько параметров, при этом каждый параметр разделяется запятой,:
Синтаксис выглядит так:
function func_name( param1 [:datatype], param2 [:datatype]) {
}
param1 и param2 — это имена параметров.
datatype — это тип параметра.
Пример
TypeScript
В примере определена функцияadd(), и тип возвращаемого значения — number.
add()Функция определяет два параметра типа number, складывает эти два параметра и возвращает результат.
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
3
Необязательные и параметры по умолчанию
Необязательные параметры
В функциях TypeScript, если мы определяем параметры, мы должны передавать эти параметры, если только не установим их как необязательные. Необязательные параметры обозначаются знаком вопроса ?.
Пример
TypeScript
В следующем примере мы задаём lastName как необязательный параметр:
TypeScript
Необязательные параметры должны следовать за обязательными параметрами. Если в приведенном выше примере мы хотим, чтобы firstName был необязательным, а lastName — обязательным, то нам нужно изменить их порядок и поставить firstName последним.
Неважно, если все параметры необязательные.
Параметры по умолчанию
Мы также можем задавать значения по умолчанию для параметров, чтобы при вызове функции, если значение параметра не передано, использовался параметр по умолчанию. Синтаксис:
function function_name(param1[:type],param2[:type] = default_value) {
}
Примечание: параметр не может быть одновременно необязательным и иметь значение по умолчанию.
Пример
В следующем примере параметр rate функции установлен в значение по умолчанию 0.50. Когда функция вызывается без передачи параметра, используется значение по умолчанию:
TypeScript
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
计算结果: 500 计算结果: 300
Остаточные параметры
Бывает ситуация, когда мы не знаем, сколько параметров передать в функцию. В таких случаях мы можем использовать rest-параметры, чтобы определить её.
Синтаксис rest-параметра позволяет передавать неопределённое количество параметров в виде массива.
TypeScript
Последний именованный параметр функции, restOfName, имеет префикс ..., и он становится массивом, состоящим из остальных параметров, с индексами от 0 (включительно) до restOfName.length (не включительно).
TypeScript
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
和为: 6 和为: 50
Анонимные функции
Анонимная функция — это функция без имени.
Анонимные функции объявляются динамически во время выполнения программы. Помимо отсутствия имени функции, они такие же, как стандартные функции.
Мы можем присвоить анонимную функцию переменной, и такое выражение становится функциональным выражением.
Синтаксис выглядит так:
var res = function( [arguments] ) { ... }
Пример
Анонимная функция без параметров:
TypeScript
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
hello world
Анонимная функция с параметрами:
TypeScript
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
24
Самовызывающиеся анонимные функции
Анонимную функцию можно вызвать самостоятельно с помощью () после функции:TypeScript
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
Hello!!
Конструктор Function
TypeScript также поддерживает использование встроенного конструктора JavaScript Function() для определения функций:
Синтаксис выглядит так:
var res = new Function ([arg1[, arg2[, ...argN]],] functionBody)
Описание параметра:
- arg1, arg2, ... argN: Список параметров.
- functionBody: Строка, содержащая инструкции JavaScript, включая определение функции.
Пример
TypeScript
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
12
Рекурсивные функции
Рекурсивная функция — это функция, которая вызывает саму себя внутри функции.Например:
Жила-была гора, в горе был храм, в храме старый монах рассказывал сказку маленькому монаху! Что за сказка? «Жила-была гора, в горе был храм, в храме старый монах рассказывал сказку маленькому монаху! Что за сказка? 'Жила-была гора, в горе был храм, в храме старый монах рассказывал сказку маленькому монаху! Что за сказка? …'»
Пример
TypeScript
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
720
Лямбда-функции
Лямбда-функции также называют стрелочными функциями.
Выражения стрелочных функций имеют более короткий синтаксис, чем выражения функций.
Функция только с одним оператором:
( [param1, param2,…param n] )=>statement;
Пример
В следующем примере объявляется лямбда-функция, возвращающая сумму двух чисел:TypeScript
Скомпилируйте приведённый выше код, чтобы получить следующий код JavaScript:
JavaScript
Вывод:
110
Функция — это блок операторов:
( [param1, param2,…param n] )=> {
// 代码块
}
Пример
В следующем примере объявляется лямбда-функция, возвращающая сумму двух чисел:
TypeScript
Компиляция приведённого выше кода создаёт следующий код JavaScript:
JavaScript
Вывод:
110Нам не нужно указывать типы параметров; типы выводятся внутри функции:
TypeScript
Компиляция приведённого выше кода создаёт следующий код JavaScript:
JavaScript
Вывод:
12 是一个数字 Tom 是一个字符串
Один параметр()необязателен:
TypeScript
Компиляция приведённого выше кода создаёт следующий код JavaScript:
JavaScript
Вывод:
输出为 12
Когда параметров нет, можно использовать пустые скобки:
TypeScript
Компиляция приведённого выше кода создаёт следующий код JavaScript:
JavaScript
Вывод:
Call function
Перегрузка функций
Перегрузка означает, что методы имеют одинаковое имя, но разные параметры, а возвращаемые типы могут быть одинаковыми или разными.
Каждый перегруженный метод (или конструктор) должен иметь уникальный список типов параметров.
Различные типы параметров:
function disp(string):void; function disp(number):void;
Разное количество параметров:
function disp(n1:number):void; function disp(x:number,y:number):void;
Разный порядок типов параметров:
function disp(n1:number,s1:string):void; function disp(s:string,n:number):void;
Если типы параметров различаются, тип параметра следует установить вany。
Если количество параметров различается, можно сделать различающиеся параметры необязательными.
Пример
В следующем примере определяются разные типы параметров и разное количество параметров:
TypeScript
Компиляция приведённого выше кода создаёт следующий код JavaScript:
JavaScript
Вывод:
abc undefined 1 xyzДругие расширения