Phi*_*ann 51 javascript jquery google-maps
我正在研究ajax谷歌地图脚本,我需要在for循环中创建动态变量名称.
for (var i = 0; i < coords.length; ++i) {
var marker+i = "some stuff";
}
Run Code Online (Sandbox Code Playgroud)
我想的是:marker0,marker1,marker2等.我猜有些问题marker+i
Firebug给了我这个: missing ; before statement
Joh*_*hnP 96
为此使用数组.
var markers = [];
for (var i = 0; i < coords.length; ++i) {
markers[i] = "some stuff";
}
Run Code Online (Sandbox Code Playgroud)
Tod*_*orf 47
我同意通常最好使用一个Array.
但是,这也可以通过简单地使用- 总是引用当前范围,通过简单地向当前范围(全局范围,如果是顶级代码; 函数范围,如果在函数内)添加属性,在JavaScript中完成this.
for (var i = 0; i < coords.length; ++i) {
this["marker"+i] = "some stuff";
}
Run Code Online (Sandbox Code Playgroud)
您稍后检索存储的值(如果您在设置它们的范围内):
var foo = this.marker0;
console.log(foo); // "some stuff"
Run Code Online (Sandbox Code Playgroud)
JavaScript的这个有点奇怪的功能很少使用(有充分理由),但在某些情况下它可能很有用.
关于迭代变量名称,我喜欢使用Template常量来创建动态变量。每个Tom,Dick和Harry都使用数组样式,这很好。在使用数组和动态变量之前,天哪!眼出血超负荷。由于模板文字目前支持有限,eval()因此甚至是另一种选择。
v0 = "Variable Naught";
v1 = "Variable One";
for(i = 0; i < 2; i++)
{//console.log(i) equivalent is console.log(`${i}`)
dyV = eval(`v${i}`);
console.log(`v${i}`); /* => v0; v1; */
console.log(dyV); /* => Variable Naught; Variable One; */
}
Run Code Online (Sandbox Code Playgroud)
当我通过API侵入自己的方式时,我制作了这个小循环代码段以查看行为,具体取决于对Template文字(与Ruby相比)的处理方式。我更喜欢Ruby的行为;需要使用eval()获得的价值是一种跛脚的,当你使用自动得到它。
_0 = "My first variable"; //Primitive
_1 = {"key_0":"value_0"}; //Object
_2 = [{"key":"value"}] //Array of Object(s)
for (i = 0; i < 3; i++)
{
console.log(`_${i}`); /* var
* => _0 _1 _2 */
console.log(`"_${i}"`); /* var name in string
* => "_0" "_1" "_2" */
console.log(`_${i}` + `_${i}`); /* concat var with var
* => _0_0 _1_1 _2_2 */
console.log(eval(`_${i}`)); /* eval(var)
* => My first variable
Object {key_0: "value_0"}
[Object] */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
150854 次 |
| 最近记录: |