簡體   English   中英

為什么此全局Javascript變量在函數內部和外部的行為有所不同?

[英]Why does this global Javascript variable behave differently inside and outside of a function?

我試圖了解為什么我的全局變量'imageUrl'在函數'genericOnClick()'內外的行為不同

var imageUrl

var id = chrome.contextMenus.create({
    "title": "Add to JC Queue",
    "contexts": ["image"],
    "onclick": genericOnClick
});

function genericOnClick(info) {
    imageUrl = info.srcUrl;
    console.log(imageUrl);
    chrome.tabs.create({
        url: chrome.extension.getURL('dialog.html'),
        active: false
    }, function (tab) {
        // After the tab has been created, open a window to inject the tab
        chrome.windows.create({
            tabId: tab.id,
            type: 'popup',
            focused: true
        });
    });
}

console.log(imageUrl);

請讓我知道我要去哪里了:

  1. 將imageUrl聲明為全局變量
  2. 將id聲明為全局變量並運行函數OnClick()
  3. 將imageUrl記錄到函數內部的控制台中(顯示正常)
  4. 函數運行后將imageUrl登錄到控制台(未定義)

當運行第二個console.log ,尚未調用該函數,因此尚未為變量分配任何東西。 但是,在函數內部它已經收到一個值,這就是您所看到的。

好吧,當您調用函數之前記錄日志時, imageURL undefined ,代碼末尾的日志在調用函數之前運行。

最后一行( console.log(imageUrl); )在聲明不帶任何值的imageUrl之后幾乎立即運行,因此在這一點上它是未定義的。

嘗試將imageUrl設置為初始值,您會看到該值將被記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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