Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情。
一、第一题
- 考点:预解析、作用域
- 当函数执行时,如果没有调用者,那么函数的this=window(全局对象)
二、第二题
- 考点:预解析、作用域、arguments
- 当函数执行时,如果有调用者,那么函数的作用域就是就是调用者(下面第一个题中调用者为数组对象arguments,第二个题为对象obj)
三、第三题
- 考点:预解析、字面量、apply/call、作用域
- apply()和call()方法都用于更改调用者对象,只是传递参数的方式不一样
- apply(调用者对象, [ 参数1,参数2,... ])
- call(调用者对象,参数1,参数2,...)
四、第四题
- 考点:变量提升、作用域、预解析
- (1)
var a代码预解析的时候,会把var声明的变量进行提升,即函数最开始会声明变量var a = undefined - (2)执行
a=100;时,将100赋值给(1)中声明的变量a - (3)执行
console.log(a);时,在函数内部作用域找到上面声明的变量a,打印100 - (4)执行
console.log(this.a);时,因为函数无调用者,即this=window,所以this.a=window.a=10,打印10 - (5)
var a在代码预解析的时候执行了,此处跳过 - (6)执行
console.log(a);时,情况同(3),打印100