簡體   English   中英

Javascript函數范圍與對象范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM