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 对象
第二个里面的this 是 window
第三个里面的this 是 {number: 20}