javascript函数

函数的定义:

在 JavaScript 中,函数可以通过两种方式进行定义:函数声明和函数表达式。

函数声明:

函数声明是一种直接将函数定义在当前作用域中的方式。

语法如下:

// js
function functionName(parameters) {
   // 函数体
   return returnValue;
}

其中,`function` 是关键字,`functionName` 是你给函数起的名称,`parameters` 是可选的函数参数,`return` 语句是可选的,用于指定函数返回值。

例如:

// js
function square(num) {
   return num * num;
}

函数表达式:

函数表达式是一种定义函数的方式,使用方式类似于变量赋值。函数表达式可以保存在变量中,并且可以作为函数参数传递。

语法如下:

// js
var functionName = function(parameters) {
   // 函数体
   return returnValue;
};

其中,`functionName` 是你给函数表达式赋的变量名称,`parameters` 是可选的函数参数,`return` 语句是可选的,用于指定函数返回值。

例如:

// js
var square = function(num) {
   return num * num;
};

函数的调用:

函数定义后,可以在代码的任何地方通过函数名称来调用它。调用函数时,需要提供参数,这些参数是函数接收的实际值。

语法如下:

// js
functionName(arguments);

其中,`functionName` 是函数的名称,`arguments` 包含函数的实际参数。需要注意的是,如果函数没有需要的参数,可以省略掉括号中的参数。

例如:

// js
function square(num) {
   return num * num;
}
var result = square(4); // result = 16

自调用函数:

函数表达式可以 "自调用",自调用表达式会自动调用,如果表达式后面紧跟 () ,则会自动调用;不能自调用声明的函数,通过添加括号,来说明它是一个函数表达式。

// js
(function () {
    var x = "Hello!!";      // 我将调用自己
})(); 

以上函数实际上是一个 匿名自我调用的函数 (没有函数名)。

回调函数:

回调函数是一种将函数作为参数传递给其他函数,以后再执行的方式。回调函数在异步编程、事件处理、数组操作等场景中很常见。

// js
function getData(callback) {
  setTimeout(function() {
    var data = {name: 'John', age: 30};
    callback(data);
  }, 2000);
}
function displayData(data) {
  console.log('My name is ' + data.name + ', and I am ' + data.age + ' years old.');
}
getData(displayData);

在上面的例子中,当 `getData` 函数执行后,会在 2 秒后异步返回数据,并调用传递给它的回调函数 `displayData`,该函数将数据展示在控制台上。

函数的作用域:

变量的作用域规定了变量在什么范围内可访问。在 JavaScript 中,变量的作用域有全局作用域和局部作用域。

函数在定义时就会创建一个新的作用域,在函数执行完后,作用域中的变量和参数都将被销毁。

全局作用域:

全局作用域包括整个 JavaScript 环境。在全局作用域中定义的变量和函数可以在任何位置访问

例如:

// js

在上面的代码中,变量 `globalVariable` 和函数 `globalFunction()` 都是在全局作用域中定义的。

局部作用域:

局部作用域只包含在函数内部定义的变量和函数。在函数内部定义的变量和函数只能在函数内部访问。

例如:

// js
function localFunction() {
   var localVariable = "Hello World";
   function subLocalFunction() {
      console.log("This is a sublocal function.");
   }
}

在上面的代码中,变量 `localVariable` 和函数 `subLocalFunction()` 都是在 `localFunction()` 的局部作用域内定义的。

闭包:

闭包是指一个函数能够访问定义在另一个函数内部的变量和参数。JavaScript 中的函数都是闭包。

例如:

// js
function outerFunction() {
   var x = 3;
   function innerFunction() {
      console.log(x);
   }
   return innerFunction;
}
var inner = outerFunction(); // x = 3
inner(); // 输出 3

在上面的示例代码中,`innerFunction()` 捕获了 `outerFunction()` 定义的变量 `x`。当 `innerFunction()` 被返回时,它仍然可以访问外部函数的变量 `x`,因为 `x` 仍然存在于内存中,并且被闭包保留下来。这就是 JavaScript 中的闭包。

闭包可在许多场景中使用,比如封装变量,模拟私有变量等。

你可能感兴趣的:(javascript)