我正在尝试了解由javascript编写的chrome扩展代码。但是有一个与回调函数相关的代码我不明白。
createCommand
根据我的理解,我发现回调函数应该运行后者,这意味着inside函数中的bookmarkTreeNodes应该来自var bookmakrTreeNodes(来自chrome.bookmakrs.getTree函数)。但是,当我将var bookmarkTreeNodes更改为其他内容并将内部函数中的bookmarkTreeNodes保持不变时,程序运行良好。这个结果与我的想法相冲突。
内部函数中的bookmakrTreeNodes来自哪里?怎么能在chrome.bookmarks.getTree()函数之前出现?
谢谢!
答案 0 :(得分:0)
您对回调的理解不正确。传递给getTree
的函数接受一个参数bookmarkTreeNodes
,该参数与您在函数外声明的var bookmarkTreeNodes
无关。
想象一下:函数chrome.bookmarks.getTree
就是这样写的。
chrome.bookmarks.getTree = function (cb) {
var bookmarkTreeNodes;
/* do some work to get the tree nodes */
cb(bookmarkTreeNodes);
// maybe return something here.
//This is the value your "var bookmarkTreeNodes" would take on eventually
//but as you can see, it has nothing to do with what is passed to your callback.
}
现在你看到回调的论点来自何处?我建议你阅读更多关于处理回调的内容,因为它是JavaScript的一个非常重要的部分。