【发布时间】:2014-01-29 12:36:31
【问题描述】:
我有以下一段代码,我不太清楚如何将它一直传递给 onload 函数。
我试图在不同的地方定义它但没有成功,特别是因为它的定义需要在传递给document.on 方法的函数中进行,因为我想获得this 引用。
$(document).ready(function(e) {
$(document).on('click', "#someId", function(e) {
e.preventDefault();
var variable = $(this).attr('name');
chrome.fileSystem.chooseEntry({
type: 'openFile', accepts:[{
extensions: ['txt']
}]
},
function(fileEntry) {
if (!fileEntry) {
return;
}
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onload = function(e) {
////******* how to access variable here? *******\\\\
chrome.storage.local.set({'txt': e.target.result});
};
reader.readAsArrayBuffer(file);
});
});
});
});
我需要在onload 函数中访问variable。
如何通过?
【问题讨论】:
-
你不需要通过它。它位于外部作用域中,因此在作用域链中自然可用。
-
@Beetroot-Beetroot,我在 onload 函数内部设置断点并查看变量范围,但我看不到变量。此外,当我尝试在控制台中获取值时,我得到 ReferenceError: variable is not defined
-
在这种情况下,要么我误解了这个问题,要么你运行的代码与上面显示的不同。
-
只是一个想法 - 尝试将 var 命名为
variable以外的其他名称。 Javascript 有一大堆保留字,它们实际上并没有出现在语言本身中。variable可能是其中之一。 -
@Beetroot-Beetroot 我已经编辑了代码,所有内容都包含在
$(document).ready(function(e)中,但不要认为这会产生任何影响。尝试将变量名称更改为variable以外的其他名称,没有任何变化。
标签: javascript closures scope