以下为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
。