文章预览
题目 已知数组 ["a", "b", "c", "d", "e"] ,编写代码,每过 1 秒打印一下数组中的值。 答案 ES5 var arr = [ "a" , "b" , "c" , "d" , "e" ]; for ( var i = 0 ; i < arr.length; i++) { ( function ( j ) { var item = arr[j]; setTimeout( function () { console .log(item); }, 1000 * (i + 1 )); })(i); } ES6 利用 ES6 中 let 块级作用域的特性。 var arr = [ "a" , "b" , "c" , "d" , "e" ]; for ( let i = 0 ; i < arr.length; i++) { const item = arr[i]; // let | const setTimeout( () => { console .log(item); }, 1000 * (i + 1 )); } 思考 看题目很容易意识到这是在考 块级作用域 ,考点主要是 ES5 里没有块级作用域,但可以 用闭包来模拟块级作用域 。 一个普通的循环 for ( var i = 0 ; i 5;
………………………………