JavaScript ES6和ES5闭包的小demo
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
可能有些小伙伴不知道ES6的写法,这儿先填写一个小例子
let connter = (res => {
for(var count = 1; ; count++){
console.log(count+'A');
if(count ===5){
return;
}
console.log(count+'B');
}
})(0)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
注意:这儿采用了箭头函数。
下面我们正式找出不一样:
// ES6闭包
let makeAdder =(x =>{
return (y=>{
return x+y;
})
})
var add5 = makeAdder(5);
console.log(add5(2));//7
var add6 = makeAdder(10);
console.log(add10(2));//12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
下面是ES5的闭包
//es5语法闭包
function makeAdder2(x) {
return function(y) {
return x + y;
};
}
var add8 = makeAdder2(8);
console.log(add8(2));//10
var add9 = makeAdder2(10);
console.log(add8(2));//12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
从上面可以看出,输出的过值都是一样的,但ES6使代码更简洁,更具有高效性,在性能上超过ES5。