1.经典的闭包,变量的作用域是词法作用域
for(var i=0; i<10; i++) { setTimeout(function () { console.log(i); }, 0); };
解析:输出10个10。
修改使结果为0123456789:
for(var i=0;i<10; i++) { setTimeout( function (j) { return function () { console.log(j); } }(i), 0 ); };
或者
for(var i=0; i<10; i++) { !function (j) { setTimeout(function() {console.log(j);}, 0); }(i); };
或者es6
for(let i=0; i<10; i++) { setTimeout( function() {console.log(i);}, 0); }
2.双向绑定
3.参数累加
function ad () { return [].reduce.call(arguments, (a,b) => {return a+b}) } console.log(ad(1,2,3,4)); // 10