资讯专栏INFORMATION COLUMN

es6学习---函数使用

Hwg / 3167人阅读

摘要:同时剩余参数也能和配合使用对象总能正确反映被传入函数的参数,而无视剩余参数的使用扩展运算符与剩余参数关联最密切的就是扩展运算符。

带参数默认值的函数

1 es5中模拟函数默认值

function makeRequest(url,timeout,callback){
    timeout = timeout || 2000;
    callback= callback || function(){};
    //瑕疵 timeout有效值为0的情况,会导致timeout的值被替换为2000
}

改进后的代码

function makeRequest(url,timeout,callback){
    timeout = (typeof timeout !== "undefined") ? timeout : 2000
    callback= (typeof callback !== "undefined") ? callback : function(){}
    //瑕疵 书写了过多的代码
}

2 es6能更容易为参数提供默认值,它使用了初始化的形式,以便在参数未被正式传递进来时使用。

function makeRequest(url,timeout=2000,callback=function(){})

只有在未传递参数,或明确将第二个参数指定为undefined时,timeout的默认值才会被使用,即便传递null也不会使用timeout的默认值

使用不具名参数

先来看下es5中的不具名参数的实现

function pick(object){
    let result = Object.create(null);
    //从第二个参数开始处理
    for(let i=1,len = arguments.length;i

为了解决上述问题,es6引入剩余参数来解决问题
剩余参数由三个点(...)与一个紧跟着的具名参数指定,它会是包含传递给函数的
其余参数的一个数组。

function pick(object,...keys){
    let result = Object.create(null);
    //从第二个参数开始处理
    for(let i=0,len = keys.length;i

当然剩余参数有些限制条件
1 一个函数只能有一个剩余参数,并且必须被放在最后
2 剩余参数不能再对象字面量的setter属性中使用。因为对象字面量的setter被限定只能使用单个参数。

同时剩余参数也能和arguments配合使用
arguments对象总能正确反映被传入函数的参数,而无视剩余参数的使用

扩展运算符

与剩余参数关联最密切的就是扩展运算符。剩余参数允许你把多个独立的参数合并到一个数组,而扩展运算符则允许将一个数组分隔,并将各个项作为分离的参数传递给函数

es6前的写法

let values = [25,50,75,100]
console.log(Math.max.apply(Math,values))

用扩展运算符的写法

let values = [25,50,75,100]
console.log(Math.max(...values))

--未完待续

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89031.html

相关文章

  • ES6-7

    摘要:的翻译文档由的维护很多人说,阮老师已经有一本关于的书了入门,觉得看看这本书就足够了。前端的异步解决方案之和异步编程模式在前端开发过程中,显得越来越重要。为了让编程更美好,我们就需要引入来降低异步编程的复杂性。 JavaScript Promise 迷你书(中文版) 超详细介绍promise的gitbook,看完再不会promise...... 本书的目的是以目前还在制定中的ECMASc...

    mudiyouyou 评论0 收藏0
  • 前端基础进阶(十四):es6常用基础合集

    摘要:在继承的构造函数中,我们必须如上面的例子那么调用一次方法,它表示构造函数的继承,与中利用继承构造函数是一样的功能。 showImg(https://segmentfault.com/img/remote/1460000009078532); 在实际开发中,ES6已经非常普及了。掌握ES6的知识变成了一种必须。尽管我们在使用时仍然需要经过babel编译。 ES6彻底改变了前端的编码风格,...

    Ryan_Li 评论0 收藏0
  • ES6学习总结(二)

    摘要:关于的学习总结昨天写了第一篇,主要是关于变量声明关键字和,新增类型以及模板字符串,今天准备写第二篇,里面的函数部分,新增了箭头函数,参数以及参数默认值。,这次我们在调用函数大的时候,两个参数全部传递了值,因此返回。 关于ES6的学习总结,昨天写了第一篇,主要是关于变量声明关键字let和const,新增类型Symbol以及模板字符串,今天准备写第二篇,ES6里面的函数部分,ES6新增了箭...

    microelec 评论0 收藏0
  • [译] 在你学习 React 之前必备的 JavaScript 基础

    摘要:前言在理想的状态下,你可以在深入了解之前了解和开发的所有知识。继承另一个类的类,通常称为类或类,而正在扩展的类称为类或类。这种类型的组件称为无状态功能组件。在你有足够的信心构建用户界面之后,最好学习。 原文地址:JavaScript Basics Before You Learn React 原文作者: Nathan Sebhastian 写在前面 为了不浪费大家的宝贵时间,在开...

    RayKr 评论0 收藏0
  • [译] 在你学习 React 之前必备的 JavaScript 基础

    摘要:前言在理想的状态下,你可以在深入了解之前了解和开发的所有知识。继承另一个类的类,通常称为类或类,而正在扩展的类称为类或类。这种类型的组件称为无状态功能组件。在你有足够的信心构建用户界面之后,最好学习。 原文地址:JavaScript Basics Before You Learn React 原文作者: Nathan Sebhastian 写在前面 为了不浪费大家的宝贵时间,在开...

    Chaz 评论0 收藏0
  • ES6学习摘要(01)(新人学习

    摘要:入门一前言由于最近本人在学习,做一些笔记能够更好的熟悉,就趁此机会来写一篇关于的新人学习摘要吧。的作用域与命令相同只在声明所在的块级作用域内有效。块级作用域新增方式和实际上为新增了块级作用域。同时,函数声明还会提升到所在的块级作用域的头部。 ECMAScript6/ES6 入门 一、前言 由于最近本人在学习ES6,做一些笔记能够更好的熟悉,就趁此机会来写一篇关于ES6的新人学习摘要吧。...

    dmlllll 评论0 收藏0

发表评论

0条评论

Hwg

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<