主要讲解:

1. rest参数
2. 严格模式
3. name属性 -- 返回函数的函数名
4. 箭头函数 -- 用 "=>" 定义函数

1.rest参数

        ...arguments                      <=>           ...[...]
引入rest参数其目的是为了获取函数的多余参数   <=>    数组的扩展运算符...的逆向形式
将参数数列转为一个数组                      <=>    将一个数组转为逗号分隔的参数序列function push(arr,...items){  //有点安能辨我是雄雌的感觉if(Array.isArray(items)){array = array.concat(items); // rest参数的情况}else{array.push(...items);        // 数组的扩展运算的情况}
}
//rest参数
push([],1,23,4,45,56)       //[1,23,4,45,56]//数组的扩展运算
push([],...[1,23,4,45,56]); //[1,23,4,45,56]注意:1.rest参数必须位于函数参数末尾,且只能存在一个rest参数,否则报错2.函数的length属性不包括rest参数,就跟止步于默认值参数一样,不确定的事情不考虑在内

2.严格模式

es5中函数内部可以设定严格模式,es6中函数参数使用了默认值、解构赋值、或者扩展运算符的话就不能设定严格模式
伪代码:function doSomething(...items){'use strict';...}//Uncaught SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list//由于代码中基本没有在函数内部使用严格模式的情况,这个就不多了解了

3.name属性 -- 返回函数的函数名

function push(arr,...items){}    push.name;//"push"push.bind({}).name//"bound push"let sayHi = function(){}sayHi.name//"sayHi"
let sayHi = function realName(){}sayHi.name//"realName"let sayHell = new Function('x','y','console.log(x,y)');sayHell.name//"anonymous"sayHell.bind({}).name//"bound anonymous"
//仅仅知道有这么一个属性,具体用处未知

4.箭头函数 -- 用 "=>" 定义函数

let sayHi = name => name;
等价于:
let sayHi = function(name){return name;
}用法:i.单个参数时,可直接写参数名ii.0个或两个及两个以上参数必须加括号let f = () => 5;let f = (x,y) => x+y;iii.函数代码块多于一条语句,就要使用大括号括起来let f = (x,y) => { ...}

**箭头函数除了简化函数的写法,特别是匿名函数.另一个重要功能就是绑定定义时所在的作用域,而非运行时动态的作用域**    

像click,setTimeout,setInterval这种运行时动态改变作用域的,写成箭头函数的形式则this仍然为代码定义处的this//计时器一个
function Timer(){this.count = 0;setInterval(() => {this.count++;},1000);
}let t = new Timer();等价的写法:
function Timer(){this.count = 0;let __that = this;setInterval(function(){__that.count++;},1000);
}
//嵌套的情况,可以以此类推.其实就是在外层作用域创建一个变量指向this,然后内层使用.每一层都会创建该层的this指向供下一层使用.

如有bug请指正Thanks♪(・ω・)ノ!

ES6之函数的扩展(二)相关推荐

  1. [ES6] 细化ES6之 -- 函数的扩展

    函数参数的默认值 函数参数指定状认值 ES6 之前,不能直接为函数的参数指定默认值,如果定义了形参,不传递实参时导致形参为undefined,只能采用变通的方法. //ES5 function fn( ...

  2. 004. ES6之函数的扩展

    2019独角兽企业重金招聘Python工程师标准>>> 1. 函数参数的默认值 ES6 允许为函数的参数设置默认值, function log(x, y = 'World') {co ...

  3. 第十节:ES6为函数做了哪些扩展?

    ES6一路扩展,字符串.数组.数值.对象无一"幸免",ES6说要雨露均沾,函数也不能落下,今天,就来讲解ES6对函数的扩展. 姿势准备好了吗?前方高能,第10节开讲...... 参 ...

  4. ES6学习(六)—函数的扩展

    ES6学习(六)-函数的扩展 挑重点 文章只列举了一部分 完整版请看阮一峰ES6入门教程 点我查看阮一峰ES6入门教程 一.函数参数的默认值 二.rest 参数 ES6 引入 rest 参数(形式为- ...

  5. es6 箭头函数 rest参数 扩展运算符

    Es6 箭头函数 语法: 普通函数: fn=function(){} 箭头函数: fn=()=>{} 特性: this是静态的,this始终指向函数声明时所在作用域下的this的值(使用call ...

  6. 重学ES6 函数的扩展(下)

    尾调用优化 什么是尾调用 尾调用(Tail Call)是函数式变成的重要概念,本身很简单,就是指函数的最后一步,调用另一个函数. function f(x){return g(x) } // 函数最后 ...

  7. 【ES6】函数的拓展

    [ES6]函数的拓展 一.函数参数的默认值 二.扩展运算符 三.箭头函数[重点!!!] 查看更多ES6教学文章: 参考文献 引言:ES6添加了函数的默认值的写法.rest参数.拓展运算符.箭头函数等特 ...

  8. “睡服”面试官系列第十三篇之函数的扩展(建议收藏学习)

    目录 1. 函数参数的默认值 1.1基本用法 1.2与解构赋值默认值结合使用 1.3参数默认值的位置 1.4函数的 length 属性 1.5作用域 1.6应用 2. rest 参数 3. 严格模式 ...

  9. ES6学习笔记(五):轻松了解ES6的内置扩展对象

    前面分享了四篇有关ES6相关的技术,如想了解更多,可以查看以下连接 <ES6学习笔记(一):轻松搞懂面向对象编程.类和对象> <ES6学习笔记(二):教你玩转类的继承和类的对象> ...

最新文章

  1. python 天气预报地图_在树莓派上用 python 做一个炫酷的天气预报
  2. java 创建定时器_SpringBoot创建定时任务
  3. 深入理解Magento-第十章-数据操作数据收集器
  4. 防御 | 阻止木马侵入(电脑设置)
  5. Java中堆内存和栈内存详解(转)
  6. ansys linux运行_如何在linux系统下启动workbench。谢谢啦。 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  7. Windows Server 2003 安装教程——图文小白版(附下载地址)
  8. mac 修改pip镜像为国内镜像
  9. Java开发实用工具推荐
  10. excel 制作二维码
  11. 浅谈:百度竞价恶意点击汇总及处理方法
  12. 解决selenium自动化测试时,chrome浏览器自动关闭问题
  13. 联想笔记本——更换SSD并重装系统
  14. MySQL学习笔记数据库学习【二】
  15. 炉石传说酒馆战棋一键拔线(windows)
  16. Mac宝藏软件推荐(笔者也在用)(一)
  17. 墨画子卿第一章第7节: “刀马旦”
  18. 分布式系统基础--CAP理论
  19. linux svn 配置文件路径,linux下svn目录访问权限的配置
  20. echarts地图学习(使用geoJson数据绘制地图)

热门文章

  1. python import模块方法
  2. USACO-Section2.2 Party Lamps
  3. C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK)
  4. CFI/CFG 安全防护原理详解(ROP攻击、DOP攻击、插装检测)
  5. golang 切片slice使用总结(动态数组、cap与len区别)
  6. SQLAlchemy 多态进阶(__mapper_args__ )、多对多标签
  7. python 中的 del 使用方法
  8. 25. PE结构-PE详解之资源
  9. ORB(Oriented FAST and Rotated BRIEF)
  10. 使用caffe自带模型训练cifar10数据集