前端面试题(1)

常见前端面试题

1
2
3
4
5
6
7
8
9
var data = []
for(var i = 0; i < 3; i++){
data[i] = function() {
console.log(i)
}
}
data[0]() // 3
data[1]() // 3
data[2]() // 3

面试题扩展

1
2
3
4
5
6
7
8
9
var data = []
for(let i = 0; i < 3; i++){
data[i] = function() {
console.log(i)
}
}
data[0]() // 0
data[1]() // 1
data[2]() // 2

分析

该题主要还是作用域问题
首先,ES5只有函数作用域跟全局作用域
第一题i属于全局作用域,当函数调用i的时候,i已经循环为最大值,所以输出为最大值
ES6中的let属于块级作用域

-------------本文结束感谢您的阅读-------------