每次在 JavaScript 中运行函数时创建一个新的唯一全局变量
Create a new unique global variable each time a function is run in javascript
可能的重复项:
Javascript 动态变量名称
一个非常基本的问题。 我想在每次调用函数时创建一个新的 javascript 全局变量。 该变量应包含元素的 id,以便我以后可以轻松访问它。
id = 2347
//this function would be called multiple times, hopefully generating a new global each time
function (id)
{
var + id = something
// I want a variable that would be named var2347 that equals something, but the above line doesn't get it.
}
在后面的函数中,我想像这样访问变量:
function two (id)
{
alert(var + id);
}
我敢肯定,当有人好心地回答这个问题时,我会有一个"doh!"的时刻。
怎么样...
var store = (function() {
var map = {};
return {
set: function ( name, value ) {
map[ name ] = value;
},
get: function ( name ) {
return map[ name ];
}
};
})();
用法:
store.set( 123, 'some value' );
然后。。。
store.get( 123 ) // 'some value'
store.get( 456 ) // undefined
现场演示:http://jsfiddle.net/jZfft/
强烈建议程序员不要声明全局变量,因为浏览器已经在全局命名空间中附带了数百个名称。对自己的变量使用全局命名空间可能会导致名称冲突,从而破坏程序或浏览器的某些功能。创建新的命名空间是免费的,所以不要害羞......
全局变量是window
对象的属性,因此window.lol
和window['lol']
定义一个全局变量lol
可以通过这些方式中的任何一种访问。第二个,window['lol']
也可以与变量名一起使用,如下所示:
var lol = 123;
var name = 'lol';
var content = window[name]; // window['lol'] == 123
content
现在将包含 123。几乎任何东西都可以放在方括号[]
之间,所以你也可以这样做:
var id = 123;
window['prefix' + id] = 'text';
var content = window['prefix' + id]; // prefix123 == text
或者,在您的情况下:
var id = 2347;
function one(id) {
window['var' + id] = something;
}
function two(id) {
alert(window['var' + id]);
}
您可以将值保存到全局哈希:
var g = {};
function (id)
{
g[id] = something;
}
function two (id)
{
alert(g[id]);
}
你真的不想做很多全局变量。 相反,您可以只创建一个全局对象或数组,并将所有其他变量附加到该对象或数组。 在这种情况下,您可能需要一个对象:
var myIds = {};
function makeSomething(id) {
// create something that goes with this id
myIds[id] = something;
}
然后,要在以后的某个时间获取该信息,您可以使用以下内容检索它:
var something = myIds[id];
提出这一建议的原因有很多。 首先,您希望最小化全局变量的数量,因为每个全局变量都有机会与您可能正在使用的其他脚本发生命名冲突。 其次,在跟踪一堆相关数据时,将其保存在一个特定的数据结构中是一种更好的编程实践,而不是将它们与所有其他数据一起全部扔进巨大的全局垃圾箱中。
甚至可以创建一个对象来为您管理所有这些:
function idFactory() {
this.ids = {};
}
idFactory.prototype = {
makeSomething: function(id) {
// create something that goes with this id
this.ids[id] = something;
},
retrieveSomething: function(id) {
return(this.ids[id]);
},
clear: function() {
this.ids = {};
}
};
// then you would use it like this:
var myIds = new idFactory();
myIds.makeSomething(2347);
var value = myIds.retrieveSomething(2347);
- 使用 grunt 在 javascript 文件中“嵌入”一个全局变量
- HTML元素在JavaScript中表示为一个全局变量,How
- 这是一个全局变量吗?
- CoffeeScript 在 'for v in values' 中创建一个全局变量 'v',导致事件中的错误引用
- 在 Jquery 中为语言切换器分配一个全局变量
- 从函数内部声明一个全局变量
- 在 TypeScript 中使用外部模块声明一个全局变量
- 我是否正在创建一个全局变量
- 将 React 模板放在一个全局变量的属性中
- AJAX和一个全局变量不起作用,我错了吗
- 多个局部变量声明与一个全局变量声明
- 将ajax响应分配给一个全局变量
- 我应该使用Javascript或PHP设置一个全局变量来唯一标识web应用程序中的每个页面吗
- 声明一个没有'var'让它成为一个全局变量或者只是改变它的值
- 用JavaScript创建一个全局变量
- 如何使用一个全局变量,这是可见的HTML/Razor和javascript都在同一个页面上
- 为什么定义在函数内部的x在我没有声明它为变量的情况下变成了一个全局变量?
- 如何使一个全局变量有不同的值与每个html页面
- 从.php页面获取JSON数据并将其存储在一个全局变量中
- 我如何赋值给一个全局变量在node.js