美文网首页
ES6学习-3.函数

ES6学习-3.函数

作者: Zip_Wang | 来源:发表于2018-01-26 14:53 被阅读11次

1、函数形参的默认值

在ES5中函数定义了参数,如果要设置默认值,则需要在函数内进行判断处理,例如:

要进行判断然后给出相应的默认值

而在ES6中,可以在函数形参中直接定义默认值,例如:

这样就不用在函数内进行判断给与默认值

2、默认参数影响arguments

在ES5,非严格模式下,修改参数时,arguments也会跟着变,例如:

在严格模式下,则不同,修改参数,arguments的值也不会变,例如:

所以在ES6下面和ES5的严格模式下,arguments的行为是一样的,修改参数值,不会影响arguments的值。

3、处理无命名参数

在函数的命名参数前添加三个点(...)就表明这是一个不定参数,该参数为一个数组,包含着自它之后传入的所有参数,通过这个数组名即可逐一访问里面的参数。例如:

这个方法就是可以把object复制一份

需要注意的是:

(1)每个函数最多只能声明一个不定参数,而且一定要放在所有参数的末尾。

(2)不定参数不能用于对象字面量setter之中。

4、展开运算符

展开运算符其实跟不定参数基本相似。Math.max()方法返回两个参数中大的一个,那么怎么返回一个数组中最大的呢。在ES6中,就可以用下面代码:

5、箭头函数

箭头函数和传统函数有以下几点不同:

(1)没有this、super、arguments和new.target绑定。

(2)不能通过new关键字调用。

(3)没有原型

(4)不可以改变this的绑定。

(5)不支持arguments对象。

(6)不支持重复的命名参数。

箭头函数一般的写法如下:

创建立即执行函数表达式,例如:

6、尾调用优化

尾调用指的是函数作为另一个函数的最后一条语句被调用。

在ES5中,尾调用函数会创建一个新的栈帧,推入调用栈,所以在循环调用的时候,相互不能释放,就可能导致调用栈越来越大。

在ES6中,缩减了严格模式下的尾调用栈的大小,满足以下条件,尾调用不再创建新的栈帧,而是清除并重用当前栈帧:

(1)尾调用不访问当前栈帧的变量

(2)在函数内部,尾调用是最后一条语句

(3)尾调用的结果作为函数值返回

例如:

doSomething这个方法就会进行优化

下面的情况不会进行优化:

所以一般尾调用优化用的最多的场景就是递归函数。递归的计算很大,那么优化就会很大。

相关文章

  • ES6学习-3.函数

    1、函数形参的默认值 在ES5中函数定义了参数,如果要设置默认值,则需要在函数内进行判断处理,例如: 而在ES6中...

  • es6新特性

    es6新特性 1.函数参数添加默认值 es6之前 es6之后: 2.字符串拼接 es6之前: es6之后: 3.解...

  • 2019-12-30 es6基本语法

    1. Let 和 Const 2.类(Class) //es6 3. 箭头函数(Arrow function) /...

  • ES6分享会总结

    学到的内容 ES6的块级作用域 1. 块级作用域的概念 2. ES6允许在块级作用域内声明函数 3. 函数在块级作...

  • TypeScript函数详解(五)

    1.函数的类型 2 函数类型的案例 3.函数的可选类型 4.默认参数 5.剩余参数 从ES6开始,JavaScri...

  • ES6重要吗?为什么要学习ES6?

    ES6 的全称 ECMAScript 1. ES6 使用频率比较高的特性 2. 学习 ES6 的步骤 3. 对比 ...

  • ES6新特性5:函数的扩展之箭头函数

    箭头函数在ES6中最常用的特性,学习好至关重要,特别在Vue项目和React项目。 箭头函数:ES6中使用(=>)...

  • ES6箭头函数简介

    @(JS技巧)[ES6|箭头函数] ES6箭头函数(Arrow Functions) ES6可以使用“箭头”(=>...

  • ES6函数的扩展(一)

    参考:ES6入门(阮一峰) 一、ES6为函数设置默认参数 ES6之前不能为函数设置默认参数,ES6新增可以为函数设...

  • es6全家桶(二)—— 箭头函数

    es6全家桶(二)—— rest参数、箭头函数 箭头函数 ES6 允许使用“箭头”(=>)定义函数。 var f ...

网友评论

      本文标题:ES6学习-3.函数

      本文链接:https://www.haomeiwen.com/subject/nfyuaxtx.html