javascript - 函数范围内的可变变量

标签 javascript variables scope

在你问之前......我不打算真正这样做。出于显而易见的原因,这是不好的做法。我只是好奇这是否可能。

在 javascript 中,可以使用括号语法在全局范围内创建变量:

var var_name  = 'my_var',
    var_value = 'my_value';

window[var_name] = var_value;

alert( my_var ); // Works! alerts user: 'my_value'

但是,当您在函数内部并使用“var”关键字时,您创建的变量的局部范围仅限于声明它们的函数。是否有一些对象可以与括号语法一起使用 (像窗口)来访问局部范围的变量?像这样:

this_function[var_name] = var_value;

我怀疑这是可能的,但我想我会要求踢球。

最佳答案

不,没有对象可以用来访问函数上下文中的 var 变量(即使它们是该执行上下文的称为“变量对象”的对象的属性;该对象没有公开name 等不能直接访问)。全局上下文中的 var 有点特殊,您不应该依赖它(尽管规范确实定义了它)。如果你想访问这些变量作为全局对象的属性(window,在网络浏览器的情况下),显式地将它们分配给 window 属性而不是使用 var,为清楚起见:

window.x = 'my value';

或者如果您愿意:

window["x"] = 'my value';

(这两个语句具有相同的结果,都在 window 对象上创建/设置了一个名为“x”的属性。)

关于javascript - 函数范围内的可变变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1848424/

相关文章:

javascript - 通过 Maps Javascript 解析

python - Python 2 和 3 中捕获的异常实例的范围

javascript - 无法使用 Jest 中的提交按钮触发 Vuetify 表单提交

javascript - Parse.com 代码不会部署 : "Could not load triggers"

linux - hdparm -tT/dev/sda 将结果抓取到变量中

windows - 使用 EnableDelayedExpansion 时变量修饰符的正确语法

string - 读取包含字符串的行(Bash)

variables - 如何在 Lua 中声明一个变量而不将其初始化为 nil?

android - Android 中有效的谷歌帐户 OAuth 2 token

javascript - Sizzle 的 CLASS Javascript 正则表达式?