es6之函数的扩展

es6之函数的扩展


开始啦!!!
这里写图片描述
1.函数参数的默认值

1.1基本用法

可以在参数中通过等号=设置默认值

    let fun1 = (x = 5) => {
      return x;
    }
    console.log(fun1())  // 5
    console.log(fun1(2)) // 2

1.2与解构赋值默认值结合使用

{a = 1, b = 2} = {}这种写法,尽量把默认值卸载左侧的大括号中

  let fun2 = ({a = 1, b = 2} = {}) => {
      console.log(a, b)
    }
    fun2({ a: 3, c: 5 })

1.3参数的默认值的位置

最好把函数中带默认值的参数,放在后面、

1.4参数的length属性

函数的length属性将会放回没有指定默认值的参数的个数

1.5作用域

当我们给函数设置默认值的时候,我们会形成一个单独的作用域,如下例子,会去找全局中的x,而不是使用函数中的x

	let x = 1;
    function f(y = x) {
      let x = 2
      console.log(y)  // 1
    }

当参数为一个函数时,是这样的

	let foo = 'outer';
    let fun3 = (f = x => foo) => {
       let foo = '123'
       console.log(f())
    }
    fun3() // outer

2.rest参数

rest参数,可以获取函数多余的参数,但是,只能在参数的最后一位,否则会报错

   let add = (...val) => {
      console.log(val)  // [1,2,3]
    }
    add(1, 2, 3)

3.严格模式

从ES5开始,函数内部可以设置严格模式,但是ES6规定,只要参数使用了默认值,解构赋值,扩展运算符,就不可以使用严格模式,否则会报错。

4.name属性

可以通过function名字.name返回这个函数的名字

5.箭头函数

5.1用法

// 写法
()=>{
}
// 用的比较多,不想写demo了

5.2 注意事项

1.this指向父级的对象,而不是它本身

2.不可以当构造函数使用,意味着不可以使用new命令

3.不可以使用arguments对象,如果要用可以用rest对象代替

4.不可以使用yield命令,因此箭头函数不能用作Generator函数

猜你喜欢

转载自blog.csdn.net/qq_37339364/article/details/82623723