一、题目:输出什么
var a = 10;
(function () {
var a = {
a: 0
}
var b = function () {
setTimeout(() => {
console.log(this.a);
})
}
b();
b.call(a);
a.a = 1;
a = {
a: 2
};
})()
答案和解析在下方
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
二、答案:
三、解析:
var a = 10;
(function () {
var a = {a: 0}
var b = function () {
setTimeout(() => {
console.log(this.a); //第四步:打印地址1所指向的内存1中的a
})
}
b();/*第一步:匿名函数是一个没有指针的全局变量,
所以匿名函数中this指向window,
所以打印的是最外层的a=10;*/
b.call(a); //第二步:把目前obj所指向的内存1的地址1传进去了
a.a = 1; //第三步:地址1指向的内存1中的属性a赋值为1
a = {a: 2 }; //第五步:在内存2中生成一个对象,将属性a赋值为2
//将指向内存2的地址2赋值给obj
})()