Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在函数内赋值后未定义JavaScript变量_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

在函数内赋值后未定义JavaScript变量

在函数内赋值后未定义JavaScript变量,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,上面的代码应该将当前页面的URL分配给变量“currentURL”,但是,函数内部的控制台日志记录正确的值,而函数外部的控制台日志记录“undefined” 我不明白为什么“currentURL”的值在函数之外是未定义的,任何帮助都将不胜感激 回调是异步的,这就是为什么不能依赖外部console.log。外部日志发生在仍在事件队列中等待的异步回调之前。外部日志发生后,将处理回调,因此您只能在该回调中成功地记录tabs值 有关详细信息,请参阅本文档:- 回调是异步的,这就是为什么不能依赖外部con

上面的代码应该将当前页面的URL分配给变量“currentURL”,但是,函数内部的控制台日志记录正确的值,而函数外部的控制台日志记录“undefined”


我不明白为什么“currentURL”的值在函数之外是未定义的,任何帮助都将不胜感激

回调是异步的,这就是为什么不能依赖外部console.log。外部日志发生在仍在事件队列中等待的异步回调之前。外部日志发生后,将处理回调,因此您只能在该回调中成功地记录tabs值

有关详细信息,请参阅本文档:-

回调是异步的,这就是为什么不能依赖外部console.log。外部日志发生在仍在事件队列中等待的异步回调之前。外部日志发生后,将处理回调,因此您只能在该回调中成功地记录tabs值

有关详细信息,请参阅本文档:-
chrome.tabs.query()方法是异步的。因此,在运行最后一行时,
currentURL
的值尚未定义


查看async/await函数可以帮助您编写程序代码,以等待回调解析,然后再继续执行。

chrome.tabs.query()方法是异步的。因此,在运行最后一行时,
currentURL
的值尚未定义

 var currentURL;
  chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
    currentURL = tabs[0].url;
    chrome.tabs.remove(tabs[0].id);
    console.log(currentURL);
  });
  console.log(currentURL);
查看async/await函数可以帮助您编写程序代码,以等待回调解析,然后再继续

 var currentURL;
  chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
    currentURL = tabs[0].url;
    chrome.tabs.remove(tabs[0].id);
    console.log(currentURL);
  });
  console.log(currentURL);
请注意,
chrome.tabs.query
中的函数是回调函数。这意味着它将在您在外部编写的控制台日志之后启动。这就是为什么
控制台.log中的值仍然未定义的原因


请注意,
chrome.tabs.query
中的函数是回调函数。这意味着它将在您在外部编写的控制台日志之后启动。这就是为什么
控制台.log中的值仍然未定义的原因

非常感谢,我的问题是solvedOf course@RyanDeng!继续编码!非常感谢,我的问题是solvedOf当然@RyanDeng!继续编码!