我想通过 set 函数设置全局变量,但它总是将其设置为 未定义
值:
var name;
var setName = function(name){
this.name = name;
}
最佳答案
在这种情况下,您不使用this
。 (它可以工作,但不一定。为什么?阅读 this )
只需使用:
var name;
var setName = function (aname) {
name = aname;
}
还要确保此代码不位于另一个作用域(函数)内:
function foo() {
// ...
var name;
var setName = function (aname) {
name = aname;
}
// ...
}
在这种情况下,名称不是全局的,您必须省略其声明才能使其全局:
function foo() {
// ...
var setName = function (aname) {
name = aname; // not it is global, if not defined in the visible scope
}
// ...
}
但这是一种不好的做法,因此请尽量避免污染 global namespace 。如果满足以下条件,则认为变量位于全局命名空间中:
- 它没有
var
(name = ...
),并且没有其他名为name
的可见局部变量 - 它是在
window
上设置的(例如window.name = ...
)
关于javascript - JS-设置全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16625890/