我试图理解为什么我的全局变量'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);
请告诉我出错的地方:
答案 0 :(得分:3)
当第二个console.log
运行时,该函数尚未被调用,因此尚未为该变量分配任何内容。但是,在函数内部它已经收到了一个值,这就是你所看到的。
答案 1 :(得分:2)
当您在调用该函数>>之前之前记录时,imageURL
undefined
,代码末尾的日志就会运行之前调用该函数。
答案 2 :(得分:2)
最后一行(console.log(imageUrl);
)几乎在您声明imageUrl
没有值后立即运行,因此在此时未定义。
尝试将imageUrl
设置为初始值,您将看到该值将被记录。