循环中的动态变量名称

时间:2013-01-21 16:22:49

标签: javascript

我需要在js里面为for循环

创建动态变量名
var counter = 0;
for(i=0; i<location.length; i++) {
   ...
   var "marker_" + counter = new google.maps.Marker({

但是当我预计会有变量marker_0,marker_1,marker_2,......我有这个错误

Error: SyntaxError: missing variable name
Source Code:
          var "marker_" + counter = new google.maps.Marker({ 

3 个答案:

答案 0 :(得分:11)

使用数组:

var marker = [];

for (i=0; i < location.length; i++) {
   marker[counter] = new google.maps.Marker({

答案 1 :(得分:4)

嗯,“使用数组”无疑是正确的答案,但是如果真的需要动态变量,则需要确定它们的范围 - 默认值为window和然后你可以这样做:

var counter = 0;
for(i=0; i<location.length; i++) {
   ...
   window["marker_" + counter] = new google.maps.Marker({

现在可以使用相同的方括号表示法访问

window["marker_0"]...

或点符号

window.marker_0

答案 2 :(得分:0)

由于此问题被用作重复目标:

如果要访问的信息用数字键键入,

Use an array是一个很好的建议。如果不是,则有两个选择:

  1. 使用对象和动态属性访问

  2. 使用// LoginViewController.swift // Together import UIKit import Firebase class LoginViewController: UIViewController { @IBOutlet weak var usernameTxt: UITextField! @IBOutlet weak var passTxt: UITextField! @IBAction func userLoginBtn(_ sender: Any) { var pass = passTxt.text Auth.auth().signIn(withEmail: usernameTxt.text!, password: passTxt.text!){ (user, error) in if error == nil{ self.performSegue(withIdentifier: "loginToHome", sender: self)} else{ let alertController = UIAlertController(title: "Error", message: error?.localizedDescription, preferredStyle: .alert) let defaultAction = UIAlertAction(title: "Ok", style: .cancel, handler: nil) alertController.addAction(defaultAction) self.present(alertController, animated: true, completion: nil) } } } override func viewDidLoad() { super.viewDidLoad() } } (ES2015 +)

使用对象

您可以通过括号符号使用字符串(或在ES2015 +中为Symbol)访问对象属性,因此可以将信息存储在对象中,以供以后使用字符串/符号访问:

Map

使用地图

即使将字符串或Symbols作为键,也可以使用Map代替对象,但是与对象不同,Map键可以是任何JavaScript值(负0除外,但足够好了):

var theData = Object.assign(Object.create(null), {
    x: "ecks",
    y: "why"
});

var key = Math.random() < 0.5 ? "x" : "y";
console.log("key = " + key + ", theData[key] = " + theData[key]);

该示例使用字符串,但同样,Map键可以是任何类型。 Map键甚至可以是一个对象。