导入
JavaScript 中的函数声明
JavaScript 函数的简要介绍,以及在 JavaScript 中声明函数的多种方式,还有一些相关概念。
函数是一段仅定义一次但可以被调用无数次的代码。JavaScript 函数由多个影响其行为的组件构成。一个典型的 JavaScript 函数包含以下部分:
function关键字- 函数名
- 参数
- 返回值
- 上下文
this
你知道吗? 在 JavaScript 中,函数实际上就是对象。和普通对象一样,它们也有属性和方法。唯一让它们与对象不同的地方在于,它们可以被调用。
命名函数和匿名函数的区别是什么?
两者的唯一区别是:匿名函数 没有正式名称,通常在运行时被赋值给变量或作为参数直接传递。之所以称为“匿名”,是因为它们在编译前没有被赋予正式名称。在 JavaScript 中声明函数的一种常见方式如下:
1function myFunction() { 2 console.log("Hello! 我是一个命名函数!"); 3} 4 5myFunction();
以下是动态声明匿名函数的方式:
1var myFunction = function() { 2 console.log("Hello! 我是一个匿名函数"); 3}; 4 5myFunction();
声明 JavaScript 函数的多种方式
在 JavaScript 中,有多种方式来声明函数。最常见的两种方式是使用函数声明或函数表达式。在函数声明中,function 关键字出现在函数名之前;而当 function 关键字出现在其他位置时,表示我们使用的是函数表达式的方法。以下是 JavaScript 中用于声明函数的六种不同方法:
- 函数声明
- 函数表达式
- 生成器函数
- 生成器函数表达式
- 箭头函数
- 函数构造器
这些声明类型决定了函数如何与其外部环境(如外部作用域、上下文以及拥有它的对象)进行交互。下表总结了所有类型、语法及适用场景:
| 名称 | 说明 | 语法 |
|---|---|---|
| 函数声明 | 这是 JavaScript 中最常用的函数声明方式。使用此方法声明的函数支持提升,即可以在声明之前调用。 | function function_name(Arg1, Arg2..){} |
| 函数表达式 | 最常用的形式之一。特别适合将函数赋值给变量,常用于作为回调函数使用。 | 命名:var var_name = function function_name(Arg1, Arg2..){};匿名: var var_name = function(Arg1, Arg2..){}; |
| 生成器函数声明 | 用于声明生成器函数,这类函数使用 yield 关键字返回一个生成器迭代器对象,后续可调用 next 方法。 | function* name(Arg1, Arg2..) {} |
| 生成器函数表达式 | 与上述类型非常相似,唯一的区别是函数名可以省略。 | 命名:function* function_name(Arg1, Arg2..){}匿名: function* (Arg1, Arg2..){} |
| 箭头函数 | ES6 引入箭头函数的两个主要原因是:简化函数表达式的语法,并解决 this 的绑定问题。如果只有一个参数,可以省略括号;如果函数体只有一条语句,可以省略大括号。 | var var_name = (Arg1, Arg2..) => {}; |
| 函数构造器 | 这是最不推荐的函数声明方式。Function 实际上是一个构造函数,用于创建新函数。传给构造函数的参数成为新函数的参数,最后一个参数是一个字符串,会被转换为函数体。这种方式可能带来安全风险和性能优化问题,因此绝不建议使用。 | var var_name = new Function(Arg1, Arg2.., 'FunctionBodyString'); |
编程挑战:编写一个 JavaScript 函数表达式
请将给出的 cube() 函数重写为“函数表达式”的形式。可以是命名的也可以是匿名的,但请确保将变量命名为 cube,否则代码无法通过编译。
1// 在此处添加你的函数表达式 2function cube(n) { 3}
关于函数的内容就介绍到这里!在下一课中,我们将深入探讨箭头函数,并了解它们在 React 中能实现哪些功能。