es6基础-函数的新特性

Posted kuishen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6基础-函数的新特性相关的知识,希望对你有一定的参考价值。

es6函数新特性,在原来es5函数基础上增加了新的函数扩展,包括传参,默认值,扩展运算符...

函数参数

  1. 函数参数默认值
  • 函数参数默认值的执行顺序是随意的
  • 只有未传递参数,或者参数为undefined,才是使用默认值
 function ajax( url,method=‘get‘, timeout=2000,callback=)
  ajax(‘/url‘) // 使用默认的请求方式method、timeout和callback
  ajax(‘/url‘, ‘post‘)  // 使用默认的请求方式timeout和callback
  ajax(‘/url‘, ‘post‘, null, () => )

  

  1. 函数参数默认值表达式
  • 除了使用具体的默认之外,还可以使用表达式构成
  • 可以使用之前的参数作为后面参数的默认值
  • 函数参数默认值存在在暂存死区,函数表达式中的参数,没有赋值无法作为其他参数的默认值
 function getValue() 
    return 5
 
 function add(a, b=getValue()) 
   return a + b
 
 function add(a=b, b) 
   return a + b
 

  

剩余参数

es6中,当传递的参数无法确定时,可以使用剩余参数表示,剩余参数是把多个独立的参数合并到一个数组中去,剩余参数表示...args,而 在es5中,多个不确定的参数使用arguments来接收

  1. 具名参数只能放在剩余参数之前,否则会报错
 function rest(a, ...args) 
    console.log(a, args) // 1 [2,3,4]
  
  rest(1, 2, 3, 4)

  

可扩展运算符

可扩展运算符能够将具有迭代属性的数据结构,展开分割为独立的元素

  • console.log(...[1,2,3])

new target属性

能够使用new target属性来判断函数是否利用new来进行调用的

function target() 
  if (new.target !== ‘undefined‘) console.log(‘通过new进行创建的‘)

  

箭头函数

箭头函数是es6中更为简洁的书写方式,基本语法:参数 => 函数体

  1. 箭头函数的新特性
  • 没有this,super, arguments和new target的绑定
    • 箭头函数中的没有this有外围函数最近的一层非箭头函数决定
  • 不能通过new关键字调用
    • 箭头函数中没有contruct的方法,也就是构造器属性,因此不能够作为构造函数
  • 没有原型对象
    • 由于不可以通过new关键字调用构造函数,因为构造函数没有prototype这个属性
  • 不可改变this的绑定
    • 函数内部的this的值不可以改变,在函数的声明周期内始终保持一致
  • 不支持arguments对象
    • 箭头函数没arguments绑定只能通过命名函数和不定参数的形式来访问
  • 不支持重复命名参数
    • 箭头函数不支持重复命名参数
let reflect = value => value
let sum = (sum1, sum2) => num1 + num2
let sum = (sum1, sum2) => 
 return  num1 + num2

[空函数]
let doNothing = () =>
[返回对象字面量]
let getObj = (id) => (id:id, name: name) // 避免和函数混淆
  • 在经常使用的回调函数中使用形式,相当于使用return(map,filter),如果主函数不具有返回值就直接使用值(forEach)
  • let add = function(a, b) 
        return a+b
    
    
    let add = (a, b) => a + b
    

      

以上是关于es6基础-函数的新特性的主要内容,如果未能解决你的问题,请参考以下文章

ES6的新特性

ES6的新特性(18)——async 函数

ES6的新特性

ES6中的新特性

ES6的新特性

关于es6新属性yield