English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
函数允许您定义一个代码块,给它命名,然后根据需要反复执行。
可以使用function关键字定义函数,也可以使用()运算符执行函数。
在本教程的前面,您了解了使用以下语法声明函数:
function nameOfFunction(parameters) { // 要执行的语句 }
声明的函数不会立即执行。声明的函数只是对函数命名,并指定函数被调用时的操作。
function greet() { document.write("Hello, World!"); }Проверьте, что‹/›
在上面的示例中,我们已经声明(定义)了一个名为greet的函数,该函数输出一条消息“ Hello,World!”。可以使用()运算符调用此功能,例如greet()。
JavaScript允许我们将函数分配给变量,然后将该变量用作函数。它称为函数表达式.
//函数表达式可以存储在变量中 var sum = function(a, b) { return a + b; }; // 该变量可用作函数 var x = sum(100, 8);Проверьте, что‹/›
上面的函数实际上是一个匿名函数(没有名称的函数)。
存储在变量中的函数不需要函数名。始终使用变量名来调用它们。
上面的函数以分号结尾,因为它是可执行语句的一部分。
在本教程的前面,您了解了JavaScript提升.
提升是JavaScript将声明移到当前作用域顶部的默认行为。
因此,可以在声明JavaScript函数之前对其进行调用:
// 声明前调用函数 greet(); function greet() { document.getElementById("output").innerHTML = "Hello World"; }Проверьте, что‹/›
使用表达式定义的函数不会被提升。
可以使函数表达式“自执行”。
自执行是一种JavaScript函数,它在定义后立即运行。
自动调用(启动)自执行表达式,而不需要调用它。也称为IIFE(立即调用的函数表达式)。
如果函数表达式后跟(),则函数表达式将自动执行。
(function () { // 要执行的语句 })();Проверьте, что‹/›
将IIFE分配给变量将存储函数的返回值,而不是函数定义本身:
let result = (function () { let name = "Seagull"; return name; })(); //立即创建输出 result; // "Seagull"Проверьте, что‹/›
下面的示例演示如何将参数传递给IIFE(立即调用的函数表达式):
(function (x, y) { document.getElementById("output").innerHTML = x + y; })(5, 10);Проверьте, что‹/›
回调函数是作为参数传递给另一个函数的函数,然后在外部函数中调用它来完成某种例程或操作。
function greet(name) { alert("Hello " + name); } function processInput(callback) { let name = prompt("Please enter your name:"); callback(name); } // Passing greet function into processInput function as an argument processInput(greet);Проверьте, что‹/›
上面的示例是一个同步回调,因为它将会立即执行。
但是,回调通常用于在异步操作完成后继续执行代码。
递归是一种迭代操作的技术,方法是使函数重复调用自身直到获得结果。
下面的示例使用递归获取数字的阶乘:
var factorial = function(number) { if (number <= 0) { return 1; } return (number * factorial(number - 1)); } }; document.getElementById("output").innerHTML = factorial(5);Проверьте, что‹/›
До сих пор мы рассказали, как использовать ключевое слово function для определения функции.
но с ECMAScript 6 появилась обновленная, более краткая методика определения функции, называемойФункция-стрелкавыражениефункция.
Известно, чтоФункция-стрелкаИспользуйте знак равенства и знак больше, чтобы показать: =>.
// Функция выражения var sum = function(x, y) { return x + y; } // Функция-стрелка const sum = (x, y) => x + y;Проверьте, что‹/›
Функции-стрелки не имеют своего own this. Они не подходят для определенияМетоды объекта.
Функции-стрелки не поднимаются. Их необходимо определить,Затем используйте их сноваОни.
Использование const безопаснее, чем var, так как функция выражения всегда является константой.
return можно опустить только в том случае, если функция является единственной инструкцией. Поэтому всегда лучше их использовать.
return можно опустить только в том случае, если функция является единственной инструкцией. Поэтому всегда лучше их использовать.
const sum = (x, y) => { return x + y };Проверьте, что‹/›