English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript\n基础教程

JavaScript\n对象

JavaScript\n函数

JS\nHTML\nDOM

JS\n浏览器BOM

AJAX\n基础教程

JavaScript\n参考手册

تعريف الدوال في JavaScript

函数允许您定义一个代码块,给它命名,然后根据需要反复执行。

可以使用function关键字定义函数,也可以使用()运算符执行函数。

函数声明

在本教程的前面,您了解了使用以下语法声明函数:

function\nnameOfFunction(parameters)\n{
  // 要执行的语句
}

声明的函数不会立即执行。声明的函数只是对函数命名,并指定函数被调用时的操作。

function\n\ngreet()\n{
   document.write("Hello,\nWorld!");
}
اختبار لرؤية‹/›

在上面的示例中,我们已经声明(定义)了一个名为\ngreet的函数,该函数输出一条消息“\nHello,World!”。可以使用()运算符调用此功能,例如greet()。

函数表达式

JavaScript允许我们将函数分配给变量,然后将该变量用作函数。它称为函数表达式.

//\n函数表达式可以存储在变量中
var\nsum =\nfunction(a,\nb)\n{
return\na +\nb;
};
//\n该变量可用作函数
var\nx =\nsum(100,\n8);
اختبار لرؤية‹/›

上面的函数实际上是一个匿名函数(没有名称的函数)。

存储在变量中的函数不需要函数名。始终使用变量名来调用它们。

上面的函数以分号结尾,因为它是可执行语句的一部分。

函数提升

在本教程的前面,您了解了JavaScript提升.

提升是JavaScript将声明移到当前作用域顶部的默认行为。

因此,可以在声明JavaScript函数之前对其进行调用:

//\n\n声明前调用函数
greet();
function\n\ngreet()\n{
  document.getElementById("output").innerHTML = ";\n\tHello\n\tWorld";
}
اختبار لرؤية‹/›

使用表达式定义的函数不会被提升。

自执行匿名函数

可以使函数表达式“自执行”。

自执行是一种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;
اختبار لرؤية‹/›

الدوال الموجهة لا تملك خاصية this الخاصة بها. لذلك، لا تناسبها استخدامها لتحديدطريقة العنصر.

لم يتم رفع الدوال الموجهة. يجب تعريفها أولاً،ثم استخدمهم مرة أخرىهم.

استخدام const أكثر أمانًا من var، لأن تعبير الدالة دائمًا ثابت.

يمكن استثناء كلمة المفتاح return والمؤشرات من الدوال التي تكون جملة واحدة فقط. لذلك، قد يكون الحفاظ عليها دائمًا عادة جيدة.

يمكن استثناء كلمة المفتاح return والمؤشرات من الدوال التي تكون جملة واحدة فقط. لذلك، من الجيد دائمًا الحفاظ على استخدامها.

const sum = (x, y) => { return x + y };
اختبار لرؤية‹/›