我试图一次多次运行同一个函数,但如果我使用 varvariablename
创建一个本地函数,子函数将无法识别它。如果我将其设置为全局,则该函数的所有实例都将覆盖它。
function vladimir(){
var test="hello";
hanspeter();
}
function hanspeter(){
console.log(test);
}
console.log 输出未定义。
最佳答案
您在这里遇到了范围界定问题。
当您在不使用 var ( function <function_name>() {}
) 的情况下声明方法时,这些函数声明将移至本地作用域的顶部(如果您想查找,则称为函数提升)。
如果您手动声明函数,则必须等到它们都声明后才能使用它们。这是因为第一个函数不知道在它下面声明的任何函数。
您还遇到了变量未确定作用域的问题。如果您在一个函数中声明了一个变量,则不能保证它在另一个函数中也存在(因为它是不同的作用域)。
如果您想传递这些变量,最简单的方法是将它们传递到函数参数中,这些参数可以在您的其他函数中访问。
因此,在您的简单示例中,您可以让它像这样工作:
var hanspeter = function (test) {
console.log(test);
}
var vladimir = function() {
hanspeter( "hello" );
}
关于javascript - nodejs变量仅在函数和子函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23837771/