javascript 中的意外标识符,但我已声明该变量

unexpected identifier in javascript, but I have declared the variable

我已经查看此文件一个小时并尝试了大量排列。

$(document).ready(function() {

var unreadMessages = document.getElementsByClassName("unreadMessage");

var previousEntries;

chrome.storage.sync.get(null, {
    var previousEntries;
    previousEntries = (data["item"]);
});

console.log(previousEntries);


});


为什么 previousEntries 会抛出 "Uncaught SyntaxError: unexpected identifier"?

这似乎是最直接的任务。是 } () 还是 , 问题?

$(document).ready(function() {

  var unreadMessages = document.getElementsByClassName("unreadMessage");

  var previousEntries;

  //                            vvvvvvvvvvvvvv
  chrome.storage.sync.get(null, function(data){
    // var previousEntries;              And if you want to access this variable outside,
    previousEntries = data["item"];   // don't redefine it here (no "var" keyword).
    logValue();                       // Now that the variable is set, you can use it
  });

  // console.log(previousEntries);    // Undefined, because it is not set yet.

  function logValue(){
    console.log(previousEntries);     // Now it should work (called from get's callback).
  }

});

尚未设置变量的原因是 chrome.storage.sync.get 就像 Ajax 或 setTimeout 一样, 异步 。想象一下这样做:

var myVar;

setTimeout(function(){
   myVar = 'Hello world!';
   console.log(myVar);     // logs "Hello world!" to the console
}, 100);

alert(myVar);              // alerts undefined