//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.なぜ1の代わりに4を返しますか?私はthis.xが1を参照していると思っていましたが、間違っているようです....私はなぜそれが4を返すのか分かりません。スーパートリッキーなJavascriptのクイズ、答えについて把握する必要があります
2.Whatは1の代わりに警告2を返します。私の知る限りでは、私は関数fooに1を渡し、1(1私が通過している)ためを警告しなければならない....私は理解していない、なぜそれ警告2
console.log 'this'これはウィンドウを参照していることを示しています。そのレベルではxは4と定義されています。これはすべてスコープに関するものです。この記事、特にクロージャの中の 'this'についての部分をチェックしてください;)http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ – HolyMoly