当前位置: 首页 > 知识库问答 >
问题:

用javascript连接来访问全局预定义的变量?[副本]

程胡非
2023-03-14

假设我有一个变量var s0=“hello”,var s1=“bye”

for(var i = 0; i < 1; i++) {console.log("s"+i);}

我如何访问这些字符串(s0和s1)以打印出来?

共有2个答案

江展
2023-03-14

对于全局级变量:

for(var i = 0; i < 1; i++) {console.log(window["s"+i]);}

对于局部变量

for(var i = 0; i < 1; i++) {console.log(eval("s"+i));}
扈俊健
2023-03-14

如果您计划以这种方式访问变量列表,那么您可能应该将它们存储在如下所示的数组中

s = ["Hello", "Bye"];
for(var i = 0; i < 1; i++) {console.log(s[i]);}

这是正确的方式,你应该停止读这里。

但是...因为javascript很奇怪,所以可以通过下面这样的字符串访问直接附加到窗口的“全局”变量

s0 = "Hello"
s1 = "Bye"

for(var i = 0; i < 1; i++) {console.log(window["s"+i]);}

基本上,您是通过window[“s0”]访问window上的变量。“s”+i语句会变成“s0”“s1”,因为javascript也很奇怪,在字符串中添加一个数字会得到一个字符串。

永远不要这样做。坚持原有的上述方法

 类似资料:
  • 预定义的全局变量和函数 Javascript 预定义了很多全局变量和函数,应当避免把它们用做变量名和函数名。如果用它们创建变量或函数,就会得到一个错误( 如果为只读 )或重定义了已经存在的变量或函数。不应该这样做,除非绝对明确自己在做什么。 arguments Array Boolean Date decodeURI decodeURIComponent encodeURI encodeURICo

  • 问题内容: 如何在其他.go包/文件中的main.go中访问已声明/初始化的变量?不断告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳记) 在main.go中 尝试访问其他.go文件中的StartTime,但保持未定义StartTime 问题答案: 我将改为“注入” starttime变量,否则在软件包之间会有循环依赖关系。 main.go otherpackage.go

  • 问题内容: 是否可以在JavaScript函数中定义全局变量? 我想在其他函数中使用变量(在函数中声明)。 问题答案: 是的,正如其他人所说的,您可以在全局范围内(在所有函数之外)使用声明全局变量: 或者,您可以在上分配一个属性: …因为在浏览器中,用声明的 所有全局变量 都是对象的属性。(在最新规范ECMAScript 2015中,全局范围内的new ,和语句创建的不是全局对象属性的全局变量;这

  • 本文向大家介绍PHP 用户定义的全局变量,包括了PHP 用户定义的全局变量的使用技巧和注意事项,需要的朋友参考一下 示例 任何函数或类之外的范围都是全局范围。当PHP脚本包含另一个脚本(使用include或require)时,范围保持不变。如果脚本包含在任何函数或类的外部,则其全局变量包含在同一全局范围内,但是如果脚本包含在函数内部,则所包含脚本中的变量位于函数的范围内。 在函数或类方法的范围内,

  • 问题内容: 是否可以使用webpack定义全局变量以产生如下所示的结果: 我看到的所有示例都使用外部文件 问题答案: 有几种方法可以处理全局变量: 1)将变量放入模块中。 Webpack仅对模块进行一次评估,因此您的实例保持全局状态,并在模块之间进行更改。 因此,如果您创建像a之类的东西并导出所有全局变量的对象,则可以读取/写入这些全局变量。您可以导入一个模块,从功能中对对象进行更改,然后导入另一

  • 我的文件中有这段代码,在这里我可以简单地使用。 现在,我需要使用socket从各种文件发出事件,而不想连接此