两道简单的前端面试题
今天面试的两道题,记录一下。
1.下面代码会输出什么
function printArr(){ var arr = [1,2,3] for(i = 0;i<arr.length;i++){ console.log(arr[i]) } } var arr = [4,5,6] for(var i = 0;i<arr.length;i++){ console.log(arr[i]) printArr() }
2.下面代码会输出什么
function foo(arr){ var result = [] for(i = 0;i<arr.length;i++){ result[i] = function(){console.log(arr[i])} } return result } var bar = foo([10,20,30,40,50]) var f = bar[0] f()
讲解:
第一题输出
4 1 2 3
因为当for循环执行第一次的时候会执行printArr(),而printArr里的for循环里的i会覆盖外层for循环的i导致外层for循环只执行一次。
第二题输出
undefined
函数foo返回了一个数组result,数组里是五个返回arr[i]的函数,当执行foo[0]的时候,沿着作用域链向上找是找不到arr的,所以返回undefined

浙公网安备 33010602011771号