0%

函数声明和函数表达式

一、在Javascript中定义一个函数的四种方式:

  • 函数声明
  • 函数表达式
  • ES6中的箭头函数
  • new Function()

二、函数声明

函数声明定义一个具有指定参数的函数。

语法:

1
2
3
function name([param,[, param,[..., param]]]) {
[statements]
}

一个被函数声明创建的函数是一个 Function 对象,具有 Function 对象的所有属性、方法和行为。查看 Function 以获取 function 的详细信息。

默认情况下,函数是返回 undefined 的。想要返回一个其他的值,函数必须通过一个 return 语句指定返回值。

注意:使用函数声明创建的函数可以被提升,即在函数声明之前使用该函数。

三、函数表达式

function 关键字可以用来在一个表达式中定义一个函数。

语法:

1
2
3
let function_expression = function [name]([param1[, param2[, ..., paramN]]]) {
statements
};

也可以使用箭头函数,即:

1
2
3
let function_expression = ([param1[, param2[, ..., paramN]]]) => {
statements
};

注意:

  • 函数表达式中的函数名(name)可以被省略。
  • 函数表达式定义的函数不会被提升,必须先声明在使用。

函数声明与函数表达式的区别

  1. 函数声明必须带有标识符(函数名称),函数表达式则可以省略
    • 表达式里的名字不能在函数外面用,只能在函数内部用
    • 函数有一个name属性,指向紧跟在function关键字之后的那个函数名。如果函数表达式没有名字,那name属性指向变量名
  2. 函数声明会被预解析,函数表达式不会