0
var obj1={
    var1:"val1",
    init:function(){
        this.var1="val2";
        var self=this;
        setTimeout(function(){self.var1="val3"},1);
        setTimeout(function(){obj1.var1="val3"},1);
    }
}

obj1.init();
console.log(obj1.var1);
console.log(obj1);

setTimeout コールバックで var1 に値を設定/割り当てる方法。val3 を割り当てても効果はなく、スクリーンショットに見られるように、var1 として言及されている 2 つのプロパティがあります。1 は var1=val2 であり、その他は var1=val3 ですが、 this.var1 は常に val3 ではなく val2 を返します

ここに画像の説明を入力

4

1 に答える 1

0

実際には、値はコードで「var3」に設定されています。ただし、デモでは、コンソールに「var2」が出力されますconsole.log()。これは、setTimeout() よりも早く起動するためです。出力後に変数が変更されます。

正しい結果については、この jfFiddleを確認してください。

于 2013-03-18T10:42:58.997 に答える