ES6 新增函数用法了解

483 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

  • 上一篇讲解了ES6新增语法 本文为扩展篇
  • 本文讲解新增函数用法

函数新增

  • 允许为函数的参数设置默认值

    let fn = (x, y='vike') => {
        console.log(x,y)
    }
    
    fn('hello')  // hello vike
    fn('hello','world') // hello world
    
  • 函数的形参是默认声明的, 不能用let,const再次声明

    let fn = (x = 1) => {
        let x = 0 // 报错
        const x = 2 //报错
    }
    
  • 参数默认值和解构默认值可以结合起来使用

    let fn = ({x,y=3}) => {
        console.log(x,y)
    }
    
    fn({}) // undefined 3
    fn({x:2}) //2 3
    
  • 参数默认值应该是函数最后参数设置 如果不是最后参数 则该参数不能省略

    let fn = (x=2,y) => {
        console.log(x,y)
    }
    
    fn() // 2 undefined
    fn(,3) // 报错 参数无法省略
    
  • 函数属性

    • length 属性
    • 将返回没有指定默认值的参数个数
    let fn = (x) => {}
    fn.length // 1
    let fn1 = (x=1) => {}
    fn1.length // 0
    
    • 如果参数默认值是第一个参数 则后面参数不计入length
    let fn = (x=1,y) => {}
    fn.length // 0
    
    • name 属性
    • 返回该函数的函数名
    let fn = () => {}
    fn.name // 'fn'
    
    (()=>{}).name // ''
    
    (new Function).name // anonymous
    
  • 作用域

    • 一旦设置了函数参数默认值 函数初始化时 就会形成局部作用域
    let fn = (x=1) => {
        console.log(x)
    }
    
    fn() // 1
    console.log(x) // x is not defined
    
  • 严格模式

    • 只要函数使用了默认值 解构赋值 扩展运算符 就不能定义严格模式
    // 严格模式
    let fn = () => {
        'use strict'
    }
    
    // error
    let fn = (x=1) => {
        'use strict'
    }
    
  • 箭头函数

    • 使用=>定义函数
    let f = x => f
    // 等同于 
    let f = (x) => {
        return f
    }
    
    • 使用多个参数
    let f = (x,y) => x+y
    // 等同于
    let f = (x,y) => {
        return x+y
    }
    

    结语

    • 今日份小知识get~