1.变量声明 let 和const
传统的 var 关键字声明变量,会存在变量提升。在ES6中,我们用 let 和 const 声明,let 声明变量,const 声明常量,let 和 const 都是块级作用域,也就是说在大括号{}内的代码块就是let 和 const 的作用域。
let 作用域在它当前所在的代码块中,不会被提升到当前函数的最顶端。
const 定义的常量不可改变,再次赋值会报错。
一道面试题
var funcs = []
for (var i = 0; i < 10; i++) {
funcs.push(function() {
console.log(i)
})
}
funcs.forEach(function(func) {
func()
})
这样的面试题是大家常见,很多同学一看就知道输出 10 十次,但是如果我们想依次输出0到9呢?两种解决方法。直接上代码。
// ES5告诉我们可以利用闭包解决这个问题
var funcs = []
for (var i = 0; i < 10; i++) {
funcs.push(
(function(value) {
return function() {
console.log(value)
}
})(i)
)
}
funcs.forEach(function(func) {
func()
})
// 再来看看es6怎么处理的
const funcs = []
for (let i = 0; i < 10; i++) {
funcs.push(
function() { console.log(i) }
)
}
funcs.forEach(func => func())
作者:陈嘻嘻啊
链接:https://www.jianshu.com/p/287e0bb867ae
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。