如何通过 JavaScript 访问一些具有相同名称的变量? [复制]
Posted
技术标签:
【中文标题】如何通过 JavaScript 访问一些具有相同名称的变量? [复制]【英文标题】:How get access to some variables with same names by JavaScript? [duplicate] 【发布时间】:2016-03-23 22:57:16 【问题描述】:我有 3 个具有相同名称(值)的变量。我想从内部函数(f2)中读取所有内容。 帮我为下一个案例编写代码(参见警报块)
var value = "global"
function f1()
var value = "external";
function f2()
var value = "internal";
alert(any code 1?) // global
alert(any code 2?) // external
alert(any code 3?) // internal
例如 ActionScript 的工作原理:
var _value = "global"
function f1()
var _value = "external";
function f2()
var ext=_value
var _value = "internal";
trace(_root._value) // works: global
trace(ext) // works: external
trace(_value) // works: internal
f2()
f1()
或通过对象激活的 ActionScript(但我知道 javascript 拒绝访问此对象):
var _value = "global"
function f1()
var _value = "external";
function f2()
_value // do link to object activation (by f1)
var _value = "internal";
trace(_root._value) // works: global
trace(this._value) // works: external
trace(_value) // works: internal
f2()
f1()
【问题讨论】:
与***.com/questions/7186171/…相关 我认为您应该为它们使用不同的 nane。内部变量或窄范围变量应具有较短的名称。如果实在想不出替代名称,可以将最里面的变量命名为_value
在链接中查找问题。问题是,JavaScript 并没有真正以这种方式分离作用域的机制:全局对象总是可以访问的,如果你试图在函数中声明一个同名的变量,它们就会被覆盖。
谢谢,但这不是实践,而是理论问题。例如对于 ActionScript,它很容易决定
Praveen Kumar,它不是重复的。因为你的链接只说root scope,而不是关于内部功能
【参考方案1】:
相同的名称将被覆盖。但是对于全球,我想你可以使用window.
:
var value = "global"
function f1()
var value = "external";
function f2()
var value = "internal";
alert(window.value) // works: global
alert(any code 2?) // no idea: external
alert(value) // works: internal
有趣的是,f2()
只能从f1()
访问!正如Rajesh 评论的那样,一个小小的改动就可以让您访问所有内容:
var value = "global"
function f1(value)
var global_value = value;
var value = "external";
function f2(value)
var internal_value = value;
var value = "internal";
alert(window.value) // works: global
alert(global_value) // works: global
alert(internal_value) // works: external
alert(value) // works: internal
【讨论】:
我相信你可以将external
变量作为函数参数传递,因为f2()
只能从f1()
调用
@Rajesh 已更新并已添加。谢谢。
不,不是。它是强变量(不是参数)。并且可以从根调用(如果 f1 将链接返回到 f2 到根就很容易)
@user5555232 你能澄清一下你在说什么吗?
alert(this.value) // 有效:global alert(global_value) // undefined // 无效: global alert(internal_value) // undefined // 无效:external alert(value) / / 作品:内部以上是关于如何通过 JavaScript 访问一些具有相同名称的变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章