在JavaScript中,函数表达式是一种将函数赋值给变量的方法。函数表达式可以出现在代码的任何位置,而不仅仅是函数声明可以出现的位置。函数表达式的语法如下:
代码语言:javascript复制var myFunction = function() {
// 函数体
};
上述代码中,将一个匿名函数赋值给变量myFunction。这意味着myFunction变量现在持有了一个函数作为其值。
函数表达式的工作方式如下:
1:变量声明:使用var、let或const关键字声明一个变量,例如myFunction。
2:函数赋值:将一个函数赋值给该变量。函数可以是匿名函数,也可以是具名函数。
3:函数调用:通过变量名加上括号来调用函数,例如myFunction()。
函数表达式的特点:
1:匿名函数:函数表达式可以是匿名函数,即没有函数名。在这种情况下,函数只能通过变量名来调用。
代码语言:javascript复制var sayHello = function() {
console.log("Hello");
};
sayHello(); // 输出 "Hello"
2:具名函数表达式:也可以为函数表达式提供一个函数名。这样的函数在函数内部和外部都可以通过函数名来调用自身。
代码语言:javascript复制var factorial = function fact(n) {
if (n === 0) {
return 1;
}
return n * fact(n - 1);
};
console.log(factorial(5)); // 输出 120
console.log(fact(5)); // 报错,fact is not defined
函数表达式和函数声明有一些重要的区别。 函数声明会被提升到作用域的顶部,而函数表达式不会被提升。因此,在使用函数表达式之前,需要确保该表达式已经被赋值。此外,函数表达式还可以根据需要在运行时动态创建函数,具有更大的灵活性。