[英]Javascript Function Scope vs Object Scope
我已經達到了這樣的程度,我試圖用一些更有希望的概念填寫我的javascript知識。
我想我非常了解范圍如何運作。 對象繼承自原型然后繼承全局范圍,而函數本身提供更傳統的塊范圍。
我無法理解的是:
function a(){
console.log(this.z);
}
a.z = 12;
a(); //returns undefined :(
我期待回應12,但當然,它沒有。 z存儲在哪里? 這個例子中“this”是指什么?
當您調用函數時,JavaScript會將當前上下文( this
)設置為調用它的對象。 如果該函數未附加到任何對象,則默認情況下將使用全局對象(瀏覽器中的window
對象) * 。
所以,在這種情況下, this
指的是全局對象,而不是a
。 在全局對象中,尚未定義z
。 這就是為什么它返回undefined
。
要獲得值12,您需要像這樣訪問它
function a() {
console.log(a.z); // Use `a` itself, instead of `this`.
}
a.z = 12;
a();
*在嚴格模式下, this
將被設置為undefined
,如果被調用的函數,而不任何顯式的對象引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.