javascript - 当名称与 Node.js 中的参数名称相同时如何从函数访问全局变量?

标签 javascript node.js scope global

当名称与 Node.js 中的参数名称相同时,如何从函数访问全局变量?

var name = null;

function func(name) {
  // How to set the global variable with the passed value
}

最佳答案

假设您正在谈论一个 node.js 模块,您的第一个 name 变量实际上不是全局的 - 它只是在模块的更高范围内(在模块级别定义)。因此,无法从在 Javascript 中具有同名参数的函数中访问它。

您必须更改两个冲突名称中的一个或另一个的名称才能访问这两个名称。

var name = null;

// change the name of the argument
function func(aname) {
     name = aname;
}

func("Bob");
console.log(name);   // "Bob"

如果它实际上是 node.js 中的全局变量,那么您可以使用 global 前缀访问它,如下所示:

global.name = "Bob";

function func(name) {
    global.name = name;
}

function("Alice);
console.log(global.name);   // "Alice"

仅供引用,通常我会远离名为name 的全局变量。如果这是浏览器代码,则已经有一个 window.name 会发生冲突。

这是一个 little primer on actual using global variables in node.js (一般不推荐)。 node.js 推荐共享导出的属性/变量/方法。

关于javascript - 当名称与 Node.js 中的参数名称相同时如何从函数访问全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35976229/

相关文章:

javascript - 在 Javascript 重定向窗口位置后获取页面的 URL 如何使用 Src LInk

javascript - 在自定义 React 元素上添加样式属性似乎不起作用

node.js - 如何在MongoDB中为共同的 friend 建模

arrays - xPages 以作用域变量作为数据源重复控制

c++ - 部分破坏的物体?

java - 在运行时,private、public、package 关键字之间有什么区别吗?

javascript - 一个或多个 "var"语句之间有什么区别吗?

javascript - 如何避免数据结果中出现html代码

javascript - 如何在 KeystoneJS 中以编程方式从页面添加项目

node.js - 将 Watson Assistant(以前称为对话)与 Telegram/Facebook 集成