2011-01-11 24 views
-1

這裏是一個代碼示例:爲什麼不實例變量取新值

var testObject = 
{ 
    val1: 1, 

    testing: function() 
    { 
     val1 = 2; 
     alert(val1); 
    } 
}; 

如何來當警報打印VAL1,它說不確定?

+0

`val1`應該提醒`2`。嘗試在http://jsfiddle.net/上創建一個重現問題的示例。 – 2011-01-11 03:01:15

+0

nvm,它的工作原理,謝謝。 – dave 2011-01-11 03:04:50

回答

5

不,它不http://jsfiddle.net/qmLMV/

注意val1: 1是一個屬性,函數體內的val1 = 2;是一個變量。與所有變量一樣,它將經歷標識符解析。在這種情況下,您正在創建一個應該避免的隱式全局變量。事先聲明你的變量。

function() { 
    var val1 = 2; 
} 

還應注意這個:

var testObject = { 
    val1: 1, 
    testing: function() { 
     var val1 = 2; 

     alert(val1); // alerts 2 
     alert(this.val1); // alerts 1 
    } 
}; 

使用this從該對象的方法內訪問該對象的屬性。