Java教程

JavaScript 基础——3.JavaScript 函数

本文主要是介绍JavaScript 基础——3.JavaScript 函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、函数基本概念

1. 定义方式

// * 1. 函数声明
function fn(n1, n2) {
  return n1 + n2;
}
// * 2. 函数表达式
const fn2 = function () {
  // 函数体
};
// * 3. 函数对象
const fn4 = new Function(n1, n2, '/*函数体*/');
// * 4. 箭头函数
const fn3 = () => {
  // 函数体
};
  • 使用构造函数的方式定义函数,仅仅只是为了说明,函数也是一种对象
  • 注意:箭头函数与普通函数完全不同,请不要将箭头函数实例与普通函数实例混为一谈

2. 函数名

  • 函数名必须是一个合法的标识符
  • 函数名是指向函数实例的一个引用
  • 箭头函数、函数声明都可以没有函数名,这样的函数被称为匿名函数/Lambda函数

3. 函数参数

  • 参数值传递:按原始值/引用值传递
  • ES5 中的特性
    • arguments 类数组对象
      • 注意:不推荐使用这个对象
  • ES6 + 中的特性
    • 函数参数也存在暂时性死区
    • 可以为参数设置默认值
    • 使用 … 来收集剩余参数

二、函数性质

1. 一般特性

  • Function 最终继承自 Object
  • Function 实例具有 Object 实例的所有特性
  • 函数可以被作为参数传入另一个函数:这样的函数被称为 回调函数
  • 函数可以被作为返回值来返回:这样会产生一个特殊的作用域 闭包
  • 函数内部的一些特性
    • arguments 类数组对象
    • this 的指向
    • caller (仅限于 ES5)
    • new.target (可以用于检测当前函数是否被作为构造函数使用)
  • 函数的属性
    • length:表示命名参数的个数
    • prototype:函数原型

2. 箭头函数的特殊性

  • 不能使用 arguments 对象
  • 不能使用 super
  • 不能使用 new.target
  • 不能被作为构造函数使用
  • 函数内的 this 取决于函数所在的作用域的 this

3. 函数作为构造函数使用

  • 可以使用 new.target 来判断当前函数是否以构造函数来调用
  • 一个构造函数,其本质仍然是一个普通函数
  • 如果函数没有 return 一个具体对象,则直接 return 函数内部的 this 对象
  • 构造函数创建的对象,不存在私有成员一说,只能通过特殊的方式实现
    • 实现方式:使用私有变量来实现私有成员的作用。构造函数返回一个特定的对象,这个对象提供构造函数内部的一些变量的访问控制
    • ES6 之后的新实现方式:使用 Proxy
这篇关于JavaScript 基础——3.JavaScript 函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!