//1st question
var x = 4,
obj = {
x: 3,
bar: function() {
var x = 2;
setTimeout(function() {
var x = 1;
alert(this.x);
}, 1000);
}
};
obj.bar();
//2nd question
function foo(a) {
arguments[0] = 2;
alert(a);
}
foo(1);
1.爲什麼它返回4而不是1?我以爲this.x指的是1,但它似乎錯了....我只是不明白爲什麼它返回4超級棘手的Javascript測驗,需要弄清楚答案
2.爲什麼它返回警報2而不是1,我想我通過一個函數,並且據我所知,我通過1函數foo,和1應該因爲一個提醒(這是當我通過1)....我只是不明白爲什麼它警告2
console.log'this',你會看到它指的是窗口。在這個水平上x被定義爲4.這是關於範圍界定的。看看這篇文章,特別是關於關閉裏面的'this'的部分;)http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ – HolyMoly