如何在JavaScript中将字符串值包装在变量中

How to wrap a string value in variable in JavaScript

本文关键字:包装 变量 字符串 JavaScript      更新时间:2023-09-26

在下面的函数中,我用选定的图标绘制标记

function addMarkers(name) {
   var iconVal = "";
   if(name == 'default'){
    iconVal = defaultIcon;
   }
   else if(name == 'school'){
        iconVal = 'schoolIcon';
   }
   marker = new L.Marker(new L.LatLng(a[0], a[1]), { icon: iconVal });
}

我的问题是如何传递如上所述的变量iconVal。有没有像Html.Raw这样的函数?

不要为这些事情使用变量名。使用具有可通过名称访问的属性的对象:

var icons = {
    default: new L.Icon.Default(),
    school: L.icon({
        iconUrl: '@Url.Content("~/Content/custom/schoolpin.png")',
        iconSize: [32, 50],
        iconAnchor: [16, 50], 
        popupAnchor: [-3, -76] 
    }),
    test: L.icon({
        iconUrl: '@Url.Content("~/Content/custom/testpin.png")',
        iconSize: [32, 50],
        iconAnchor: [16, 50], 
        popupAnchor: [-3, -76] 
    })
};
function addMarkers(name) {
   var iconVal = icons[name];
   var marker = new L.Marker(new L.LatLng(a[0], a[1]), { icon: iconVal });
}

如果图标是全局变量(我并不建议它们应该是全局变量;请听我说完),您可以访问这样的变量:

   marker = new L.Marker(new L.LatLng(a[0], a[1]), window[icon].iconVal);

动态访问局部变量并不是那么简单,所以使用iconVal来保存整个图标对象,而不是"指针"。这是假设CCD_ 1可以直接访问本地图标对象。

function addMarkers(name) {
  var icon;
  if(name == 'default'){
    icon = defaultIcon;
  }
  else if(name == 'school'){
    icon = schoolIcon;
  }
  marker = new L.Marker(new L.LatLng(a[0], a[1]), icon.iconVal);
}