如果名称与Node.js中的参数名称相同,如何从函数访问全局变量?
set.seed(12039)
NX <- 20
DF <- as.data.frame( matrix(rnorm(100*NX), ncol = NX))
DF$y <- rnorm(100)
lm(y~., data = DF)
# Call:
# lm(formula = y ~ ., data = DF)
#
# Coefficients:
# (Intercept) V1 V2 V3 V4 # V5 V6 V7 V8
# -0.059471 0.038887 -0.024053 -0.131015 -0.086795 # -0.159099 -0.269060 0.099055 -0.092254
# V9 V10 V11 V12 V13 # V14 V15 V16 V17
# -0.080832 0.006313 0.068917 -0.030187 0.279635 # 0.038846 -0.071679 0.112288 -0.007563
# V18 V19 V20
# 0.030256 0.163070 0.020152
答案 0 :(得分:2)
假设您正在讨论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中建议共享导出的属性/变量/方法。