设置超时内的变量未定义
Variable undefined inside of set timeout
为什么 eta 变量在第一次交互后未定义?我查看了 Closures、Invokable Functions、Binding,但我不确定交易是什么...
var eta = 5400
function runCode() {
function queryEta(eta) {
// redo the eta lol
setTimeout(function() {
console.log(eta)
queryEta()
}, eta);
}
queryEta(eta);
}
runCode()
当你在没有任何参数的情况下调用 queryEta()
时,queryEta
中的 eta
参数是未定义的(并且隐藏了顶部定义的参数)
当您创建具有相同名称的 locally-scoped 参数时,您正在重新定义 eta
变量在函数内部的含义。
另外,不要忘记将参数传递给内部函数内部的函数调用。
如果您无法理解范围界定,请查看教程,例如"JavaScript Scope and Closures".
var globalEta = 5400;
function runCode() {
function queryEta(localEta) {
setTimeout(function() {
console.log(localEta)
queryEta(localEta); // Make sure you pass this in!
}, localEta);
}
queryEta(globalEta);
}
runCode()
您可以访问 window...
var eta = 5400;
function runCode() {
function queryEta(eta) {
setTimeout(function() {
console.log(eta)
queryEta(eta); // Make sure you pass this in!
}, eta);
}
queryEta(window.eta); // Here!
}
runCode()
为什么 eta 变量在第一次交互后未定义?我查看了 Closures、Invokable Functions、Binding,但我不确定交易是什么...
var eta = 5400
function runCode() {
function queryEta(eta) {
// redo the eta lol
setTimeout(function() {
console.log(eta)
queryEta()
}, eta);
}
queryEta(eta);
}
runCode()
当你在没有任何参数的情况下调用 queryEta()
时,queryEta
中的 eta
参数是未定义的(并且隐藏了顶部定义的参数)
当您创建具有相同名称的 locally-scoped 参数时,您正在重新定义 eta
变量在函数内部的含义。
另外,不要忘记将参数传递给内部函数内部的函数调用。
如果您无法理解范围界定,请查看教程,例如"JavaScript Scope and Closures".
var globalEta = 5400;
function runCode() {
function queryEta(localEta) {
setTimeout(function() {
console.log(localEta)
queryEta(localEta); // Make sure you pass this in!
}, localEta);
}
queryEta(globalEta);
}
runCode()
您可以访问 window...
var eta = 5400;
function runCode() {
function queryEta(eta) {
setTimeout(function() {
console.log(eta)
queryEta(eta); // Make sure you pass this in!
}, eta);
}
queryEta(window.eta); // Here!
}
runCode()