再不用ES6就Out了--函数的新特性
2016-11-29 18:43
267 查看
函数默认值
默认值这要是针对参数传入为undefined的值。ES6之前的写法:function add(x, y) { x = x || 1; y = y || 1; return x + y; } console.log(add()); // 2
进入ES6的你:
function add(x = 1, y = x) { return x + y; } console.log(add()); // 2
这里有一点要注意的:(函数内不能再重新声明参数变量)
function add(x = 1, y = 1) { let x = 20; //Error const y = 20; //Error }
rest参数
说到rest参数,首先介绍一下新的运算符,扩展运算符(…)* 将一个数组变为参数数列。
let arr = [1,2,3]; console.log(Object.prototype.toString.call(...arr)); //[object Number]这点有点奇怪 console.log(...arr); //1 2 3
怎么用扩展运算符来成就rest参数呢:
function add(...numbers) { let sum = 0; for (let val of numbers) { sum += val; } return sum; } let arr = [1,2,3,4,5]; console.log(add(1,2,3,4,5)); //15 console.log(add(...arr)); //15 //ES5的写法 console.log(add.apply(null,arr)); //15
注意事项:
* rest参数只能是最后一个参数(剩下的参数的意思)
* 使用rest参数代替arguments
箭头函数
ES6之前的写法:function add(x, y) { return x + y; }
进入ES6你可以采用这样的姿势:
单个参数 单条语句 let add = n => n * 10; 多个参数,多条语句 let add = (x = 1, y = x) => { x = x * 10; y = y - 10; return x * y; }
是不是简洁明了。接下来让我们来看一段代码更深入的了解箭头函数:
ES6之前: function old() { function temp() { console.log('==========old============'); console.log(this); // window console.log(this.name) //global } temp(); } var name = 'global'; old.call({name: 'xiaoming'}); ES6: let newFunc = function () { let temp = () => { console.log("=========new==========="); console.log(this); //Object {name: "xiaoming"} console.log(this.name); //xiaoming } temp(); } var name = 'global'; newFunc.call({name: 'xiaoming'});
这里我们发现箭头函数是可以绑定this的,它是怎么实现的呢?
var newFunc = function () { var _this = this; //保存this var temp = function () { console.log("=========polyfill==========="); console.log(_this); //Object {name: "xiaoming"} console.log(_this.name); //xiaoming } temp(); } var name = 'global'; //Object {name: "xiaoming"} newFunc.call({name: 'xiaoming'}); //xiaoming
所以箭头函数本身是没有this的,而是绑定了this。
相关文章推荐
- ES6新特性(函数默认参数,箭头函数)
- 再不用ES6就Out了--es6变量声明
- 函数的参数不一定是要程序传值进去的,它也有可能不用传值,而是作为返回值,比如out
- 笔记:ES6新特性-函数的简写(箭头函数)
- ES6特性总结(3)——函数的变化
- 再不用ES6就Out了--Object中新增的几个方法
- ES6新特性之函数的扩展实例详解
- ES6新特性箭头函数(Arrow Function)
- ES6(函数新增特性)
- ES6 函数的几个特性
- javaES6箭头函数的全新特性
- ECMAScript6(ES6)标准之函数扩展特性箭头函数、Rest参数及展开操作符
- ES6新特性八:async函数用法实例详解
- es6新特性之箭头函数
- 再不用ES6就Out了--ES6解决两个典型问题
- ES6新特性之生成器函数 (generator function)- function-
- 排名前10的ES6特性之箭头函数 【Arrow Functions】
- 再不用ES6就Out了--Promise解决回调地狱
- es6箭头函数(=>)与展开特性运算符(...)的使用
- ES6新特性三: Generator(生成器)函数详解