es6基础-函数的新特性
Posted kuishen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6基础-函数的新特性相关的知识,希望对你有一定的参考价值。
es6函数新特性,在原来es5函数基础上增加了新的函数扩展,包括传参,默认值,扩展运算符...
函数参数
- 函数参数默认值
- 函数参数默认值的执行顺序是随意的
- 只有未传递参数,或者参数为undefined,才是使用默认值
function ajax( url,method=‘get‘, timeout=2000,callback=) ajax(‘/url‘) // 使用默认的请求方式method、timeout和callback ajax(‘/url‘, ‘post‘) // 使用默认的请求方式timeout和callback ajax(‘/url‘, ‘post‘, null, () => )
- 函数参数默认值表达式
- 除了使用具体的默认之外,还可以使用表达式构成
- 可以使用之前的参数作为后面参数的默认值
- 函数参数默认值存在在暂存死区,函数表达式中的参数,没有赋值无法作为其他参数的默认值
function getValue() return 5 function add(a, b=getValue()) return a + b function add(a=b, b) return a + b
剩余参数
es6中,当传递的参数无法确定时,可以使用剩余参数表示,剩余参数是把多个独立的参数合并到一个数组中去,剩余参数表示...args,而 在es5中,多个不确定的参数使用arguments来接收
- 具名参数只能放在剩余参数之前,否则会报错
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中更为简洁的书写方式,基本语法:参数 => 函数体
- 箭头函数的新特性
- 没有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基础-函数的新特性的主要内容,如果未能解决你的问题,请参考以下文章