ES6函数扩展
- 可以直接为函数的参数指定默认值,参数变量是默认声明的,所以不能用let或const再次声明,参数默认值不是传值的,而是每次都重新计算**默认值表达式**的值。也就是说,参数默认值是惰性求值的。
- 参数默认值可以与解构赋值的默认值,结合起来使用
- 通常情况下,定义了默认值的参数,应该是函数的尾参数。因为这样比较容易看出来,到底省略了哪些参数。如果非尾部的参数设置默认值,实际上这个参数是没法省略的。
- 指定了默认值以后,函数的argument.length属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,argument.length属性将失真
- 可以将参数默认值设为undefined,表明这个参数是可以省略的
- ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了;rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错;函数的length属性,不包括 rest 参数。
~~~
function push(array, ...items) {
items.forEach(function(item) {
array.push(item);
console.log(item);
});
}
var a = [];
push(a, 1, 2, 3)
~~~
- 函数的name属性,返回该函数的函数名,这个属性早就被浏览器广泛支持,但是直到 ES6,才将其写入了标准。
- 如果箭头函数不需要参数或需要多个参数,就使用一个**圆括号代表参数**部分
- 如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回
- 箭头函数可以与变量解构结合使用。
- 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象,正是因为它没有this,所以也就不能用作构造函数。
- 由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向。
- **尾调用优化**(Tail call optimization),即只保留内层函数的调用帧;如果所有函数都是尾调用,那么完全可以做到每次执行时,调用帧只有一项,这将大大节省内存;这就是“尾调用优化”的意义。
- ES6 第一次明确规定,所有 ECMAScript 的实现,都必须部署“**尾调用优化**”;这就是说,ES6 中只要使用尾递归,就不会发生栈溢出,相对节省内存。
- 1.Mock.js
- 2.conic-gradient 圆锥渐变
- 3.ES6 Module学习笔记
- 4.ES6函数扩展学习笔记
- 5.导入topojson模块的坑
- 6.git 内部分享
- 7.npm install --save
- 8.nvm和nrm
- 9.删除node_modules文件夹
- 10.es6 symbol
- 11.Set和Map数据结构
- 12.chrome控制台的$0
- 13.d3-ordinal
- 14.Object.assign() 和lodash的merge()
- 15.echarts x轴坐标文字显示不全
- 16.echarts地图配置项--中文
- 17.webpack自动浏览器打开插件
- 18.D3线条和面积动画--未采用
- 19.投影滤镜
- 20.文本挡住触发事件
- 21图表用法
- 22.大胆的表现自己把
- 23.裁剪clip-path
- 24svg线条动画的反向和时间误差
- 25.visibility和display的区别
- 26.SVG滤镜
- 27windo命令行的坑
- 28.textContent与innerText的不同
- 29.CSS3炫酷文本
- 30.更改webpack配置文件路径
- 31.大胖给我做的css codereivew
- 32.定义接口不要限定死
- 33.不使用浮动,用inline-block平分出现换行问题
- 34.输入框的校验
- 35.handlbars的registerHelper
- 36.animation-fill-mode
- 37.svg嵌套HTML,实现文本换行
- 38.SVN出现黄色感叹号
- 39.typeof与instanceof
- 40.SVG里面谨慎设置font-family
- 41.新脚手架里的相对路径问题