javascript - JS-设置全局变量

标签 javascript variables

我想通过 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/

相关文章:

variables - 使目标取决于变量

Excel VBA : Using Variables in CountIf function

javascript - 使用 webpack Laravel 5.4 加载 Materialize 时出现 jQuery 错误

javascript - 如何将单击对象的文本传递给变量

ruby-on-rails - Rails应用程序变量生命周期问题

javascript - 仅在具有布局属性的元素内应用于自定义 polymer 元素的样式

powershell - 变量路径

javascript - 同时点击2个元素?

javascript - 使用带有 jquery 的内部数组第一项从数组中删除数组

javascript - 如何正确地将具有多个元素的新对象推送到数组中?