Вступление
-
Функция * - это блок кода, который выполняет действие или возвращает значение. Функции - это пользовательский код, определенный программистами, которые можно использовать повторно, и поэтому они могут сделать ваши программы более модульными и эффективными.
В этом уроке мы изучим несколько способов определения функции, вызова функции и использования параметров функции в JavaScript.
Определение функции
Функции определяются или объявляются с помощью ключевого слова + function +
. Ниже приведен синтаксис функции в JavaScript.
function nameOfFunction() {
// Code to be executed
}
Объявление начинается с ключевого слова + function +
, за которым следует имя функции. Имена функций подчиняются тем же правилам, что и переменные - они могут содержать буквы, цифры, знаки подчеркивания и знаки доллара и часто пишутся по адресу https://www.digitalocean.com/community/tutorials/understanding-syntax-and-code-structure- in-javascript # идентификаторы [случай верблюда]. За именем следует набор скобок, которые можно использовать для необязательных параметров. Код функции содержится в фигурных скобках, например, в выражении for или в https: / /www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-javascript[if Statement].
В нашем первом примере мы сделаем * объявление функции *, чтобы напечатать оператор приветствия на консоль.
// Initialize greeting function
function greet() {
console.log("Hello, World!");
}
Здесь у нас есть код для вывода + Hello, World! +
На консоль, содержащийся внутри функции + greet () +
. Однако ничего не произойдет, и никакой код не будет выполняться, пока мы * не вызовем * или не вызовем функцию. Вы можете вызвать функцию, написав имя функции с последующими круглыми скобками.
// Invoke the function
greet();
Теперь мы соберем их вместе, определим нашу функцию и вызовем ее.
greet.js
// Initialize greeting function
function greet() {
console.log("Hello, World!");
}
// Invoke the function
greet();
При вызове + greet (); +
функция запустится, и мы получим + Hello, World! +
В качестве вывода программы.
OutputHello, World!
Теперь у нас есть код + greet () +
, содержащийся в функции, и мы можем использовать его столько раз, сколько захотим.
Используя параметры, мы можем сделать код более динамичным.
Параметры функции
В нашем файле + greet.js
мы создали базовую функцию, которая выводит на консоль` + Hello, World`. Используя параметры, мы можем добавить дополнительную функциональность, которая сделает код более гибким. * Параметры * являются входными данными, которые передаются в функции как имена и ведут себя как локальные переменные.
Когда пользователь входит в приложение, мы можем захотеть, чтобы программа приветствовала его по имени, вместо того, чтобы просто сказать «Привет, мир!».
Мы добавим в нашу функцию параметр, называемый + name +
, для представления имени встречаемого человека.
// Initialize custom greeting function
function greet(name) {
console.log(`Hello, ${name}!`);
}
Имя функции - + greet +
, и теперь у нас есть один параметр в скобках. Имя параметра следует тем же правилам, что и имя переменной. Внутри функции вместо статической строки, состоящей из + Hello, World +
, мы имеем https://www.digitalocean.com/community/tutorials/how-to-work-with-strings-in-javascript# переменные-в-строках-с-шаблоном-литералами [template literal] строка, содержащая наш параметр, который теперь ведет себя как локальная переменная.
Вы заметите, что мы нигде не определили наш параметр + name +
. Мы присваиваем ему значение при вызове нашей функции. Предполагая, что нашего пользователя зовут Сэмми, мы вызовем функцию и поместим имя пользователя в качестве * аргумента *. Аргумент является фактическим значением, которое передается в функцию, в данном случае это строка " Sammy "
.
// Invoke greet function with "Sammy" as the argument
greet("Sammy");
Значение " Sammy "
передается в функцию через параметр + name +
. Теперь каждый раз, когда + name +
используется во всей функции, она будет представлять значение " Sammy "
. Вот весь код.
greetSammy.js
// Initialize custom greeting function
function greet(name) {
console.log(`Hello, ${name}!`);
}
// Invoke greet function with "Sammy" as the argument
greet("Sammy");
Когда мы запустим программу выше, мы получим следующий вывод.
OutputHello, Sammy!
Теперь у нас есть пример того, как функцию можно использовать повторно. В реальном примере функция извлекает имя пользователя из базы данных, вместо того, чтобы напрямую указывать имя в качестве значения аргумента.
В дополнение к параметрам переменные могут быть объявлены внутри функций. Эти переменные известны как * локальные переменные * и будут существовать только внутри scope их собственного функционального блока. Область действия переменной определяет доступность переменных; Переменные, которые определены внутри функции, не доступны извне функции, но они могут использоваться столько раз, сколько их функция используется в программе.
Возвращаемые значения
В функции можно использовать более одного параметра. Мы можем передать несколько значений в функцию и вернуть значение. Мы создадим функцию, чтобы найти сумму двух значений, представленных + x +
и + y +
.
sum.js
// Initialize add function
function add(x, y) {
return x + y;
}
// Invoke function to find the sum
add(9, 7);
В приведенной выше программе мы определили функцию с параметрами + x +
и + y +
, а затем передали значения + 9 +
и + 7 +
в функцию. Когда мы запустим программу, мы получим сумму этих чисел в качестве выходных данных.
Output16
В этом случае, когда + 9 +
и + 7 +
переданы в функцию + sum () +
, программа вернула + 16 +
.
Когда используется ключевое слово + return +
, функция перестает выполняться и возвращается значение выражения. Хотя в этом случае браузер будет отображать значение в консоли, это не то же самое, что использование + console.log () +
для печати в консоли. Вызов функции выведет значение именно там, где была вызвана функция. Это значение может быть использовано немедленно или помещено в переменную.
Функциональные выражения
В последнем разделе мы использовали объявление функции, чтобы получить сумму двух чисел и вернуть это значение. Мы также можем создать * https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function [выражение функции] *, назначив функцию переменной.
Используя тот же пример функции + add +
, мы можем напрямую применить возвращаемое значение к переменной, в этом случае + sum +
.
functionExpression.js
// Assign add function to sum constant
const sum = function add(x, y) {
return x + y;
}
// Invoke function to find the sum
sum(20, 5);
Output25
Теперь константа + sum +
является функцией. Мы можем сделать это выражение более кратким, превратив его в * анонимную функцию *, которая является неназванной функцией. В настоящее время наша функция имеет имя + add +
, но с помощью выражений функций нет необходимости называть функцию, и имя обычно опускается.
anonymousExpression.js
// Assign function to sum constant
const sum = function(x, y) {
return x + y;
}
// Invoke function to find the sum
sum(100, 3);
Output103
В этом примере мы удалили имя функции, которое было + add +
, и превратили его в анонимную функцию. Выражение именованной функции может использоваться для помощи в отладке, но обычно оно опускается.
Функции стрелок
До сих пор мы рассмотрели, как определять функции, используя ключевое слово + function
. Однако есть более новый, более краткий метод определения функции, известный как * выражения функций стрелок * по состоянию на ECMAScript 6. Функции стрелок, как их обычно называют, представлены знаком равенства, за которым следует знак больше, чем: + ⇒ +
.
Функции со стрелками всегда являются анонимными функциями и типом выражения функции. Мы можем создать базовый пример, чтобы найти произведение двух чисел.
arrow Function.js
// Define multiply function
const multiply = (x, y) => {
return x * y;
}
// Invoke function to find product
multiply(30, 4);
Output120
Вместо того, чтобы писать ключевое слово + function
, мы используем стрелку` + ⇒ + `для обозначения функции. В противном случае он работает аналогично регулярному выражению функции, с некоторыми дополнительными отличиями, о которых вы можете прочитать в https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Arrow_functions[Arrow. Функции на Сеть разработчиков Mozilla.
В случае только одного параметра круглые скобки могут быть исключены. В этом примере мы возводим в квадрат + x +
, для которого в качестве аргумента необходимо передать только одно число. Скобки были опущены.
// Define square function
const square = x => {
return x * x;
}
// Invoke function to find product
square(8);
Output64
С этими конкретными примерами, которые состоят только из оператора + return +
, функции стрелок позволяют еще больше уменьшить синтаксис. Если функция представляет собой только одну строку + return +
, обе фигурные скобки и оператор + return +
могут быть опущены, как показано в примере ниже.
// Define square function
const square = x => x * x;
// Invoke function to find product
square(10);
Output100
Все три из этих типов синтаксиса приводят к одному и тому же выводу. Как правило, вопрос о том, как вы будете структурировать свои собственные функции, зависит от предпочтений или стандартов кодирования компании.
Заключение
В этом уроке мы рассмотрели объявления функций и выражения функций, возвращение значений из функций, присвоение значений функций переменным и функции стрелок ES6.
Функции - это блоки кода, которые возвращают значение или выполняют действие, что делает программы масштабируемыми и модульными.