记录2道前端面试题

56 阅读1分钟

1.在浏览器控制台中运行foo 函数 是否会导致堆栈溢出错误?

function foo() {
    setTimeout(foo, 0) 
}
// 运行foo 函数
foo()

答案: 不会导致堆栈溢出
js 代码在运行期间有一块空间固定的栈区间
函数执行期间会进栈 执行完毕会出栈 所以这一块代码会一直执行  出栈
进栈 而不会导致栈溢出


2.读代码,并写出来打印结果



var number = 50
var obj = {
    number: 60,
    getNum: function() {
        console.log(this) // 1.obj 2.window 3.{number: 20} 
        var number = 70
        return this.number
    }
}
console.log(obj.getNum())
console.log(obj.getNum.call(undefined))
console.log(obj.getNum.call({number: 20}))

    
答案:  60 50 20

因为:
第一个里面的this 是 obj 对象
第二个里面的thiswindow
第三个里面的this 是 {number: 20}