函数的参数

JavaScript 函数的参数。

  1. function f(a, b, c) { // 参数可以声明多个并且支持是任意类型
  2. console.log(a)
  3. console.log(b)
  4. console.log(c)
  5. }
  6. f(1, 'a')
  7. // 1
  8. // 'a'
  9. // 未传递参数的值等于 'undefined'

参数默认值

参数的初始值。

  1. function f(num = 0) {
  2. console.log(num)
  3. }
  4. f() // 0 | 如果不传参,num 的默认值是 0
  5. f(1) // 1

arguments

在ECMAScript 5中,函数内部存在两个特殊的对象: arguments 和 this 。ECMAScript 6又新增了 new.target 属 性。

argument参数对象。它是一个类数组对象,包含调用函数时传入的所有参数。这个对象只有以 function 关键字 定义函数(相对于使用箭头语法创建函数)时才会有。

  1. (function(){
  2. console.log(arguments) // {0:'a',1:'b',2:'c'} | 获取所有的参数
  3. console.log(arguments.callee) // [Function] | 获取当前函数对象
  4. // arguments.callee() 可以看成是匿名函数的递归操作
  5. })('a','b','c')

rest 参数打包

Rest 参数语法使用 … 表示,会将所有未明确的参数表示为一个数组

  1. (function(a,b,...rest){
  2. console.log(a,b,rest) // 1 2 [3,4] | rest 是一个数组,用于保存多于的参数
  3. })(1,2,3,4);

形参与实参

image.png

剩余参数

函数的属性

ECMAScript中的函数是对象,因此有属性和方法。每个函数都有两个属性: length 和 prototype 。

length

length 属性保存函数定义的命名参数的个数

image.png

prototype

new.target属性(函数内部)

ECMAScript 6新增了检测函数是否使用 new 关键字调用的 new.target 属性。如果函数是正常调用的, 则 new.target 的值是 undefined ;如果是使用 new 关键字调 用的,则 new.target 将引用被调用的构造函数。
image.png

toString