两道简单的前端面试题

今天面试的两道题,记录一下。

1.下面代码会输出什么

function printArr(){
    var arr = [1,2,3]
    for(i = 0;i){
        console.log(arr[i])
    }
}
var arr = [4,5,6]
for(var i = 0;i){
    console.log(arr[i])        
        printArr()
}    

2.下面代码会输出什么

function foo(arr){
    var result = []
    for(i = 0;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

转载于:https://www.cnblogs.com/cheukle3/p/6213340.html

你可能感兴趣的:(两道简单的前端面试题)