javascript - nodejs变量仅在函数和子函数中

标签 javascript node.js variables scope

我试图一次多次运行同一个函数,但如果我使用 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/

相关文章:

javascript - const 已经在 ES6 开关 block 中声明

variables - GNU 制造商 : Using % in a pattern-rule macro

c# - 将对象添加到 javascript 数组,然后在同一个 .js 文件中访问它们

javascript - 如果对象是构造函数,如何调用对象上的方法?

javascript - 用于将引用字符串拆分为其组件的正则表达式

javascript - Rails 基于媒体查询加载部分

node.js - 在node js中读取图像数据并裁剪图像的某些部分

javascript - Node.js:在二进制数组上迭代哪个命令

bash - 局部变量 `unset` 的奇怪行为

variables - gnuplot 将数据文件中的一个数字存储到变量中