以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 小测验
49. `this` IV
输出是:
1
10
1
2
解释如下:
- 第一个
console.log(a.foo1.call())中,a.foo1函数内部的this没有被指定,因此默认为全局对象。在严格模式下,全局对象不能用作默认的this,因此该代码会在非严格模式下返回 1。 - 第二个
console.log(a.foo1())中,a.foo1函数被调用时,它的this被绑定到了a对象,因为它是在a对象上被定义的。因此this.bar++会使a对象的bar属性增加 1,输出为 10。但是foo1函数本身并没有改变全局变量bar,因此在调用a.foo1()之后,全局变量bar仍然是 1。 - 第三个
console.log(a.foo2.call())中,a.foo2函数内部调用了foo函数,而foo函数的this依然是全局对象。因此输出为 1。 - 第四个
console.log(a.foo2())中,与第二个console.log的情形类似,a.foo2函数内部的foo函数的this被绑定到了a对象。因此this.bar++会使a对象的bar属性增加 1,输出为 11。在调用a.foo2()之后,全局变量bar仍然是 1,因为通过a.foo2无法访问全局变量bar。