我有点想解决如何使用eval()解决问题。基本上我需要在代码中使用一个字符串,但是引号的存在似乎使它变得糟透了,因此我的解决方法是评估我的原始变量...

$( "input" ).click(function( event ) {
    layerClicked = event.target.value;
    layerClicked = eval(layerClicked);

        if (map.hasLayer(layerClicked)) {
            map.removeLayer(layerClicked);
        }
        else{
            map.addLayer(layerClicked);
        } ;
});


这是对eval的合法使用和可接受的使用,还是我错过了更基本的东西?

提前致谢,
罗文

最佳答案

我假设您在单击输入时尝试访问全局变量值。一种替代方法是将您要访问的所有这些值放入对象中。这样,您可以使用方括号符号来访问它们,并且不需要eval。

var layers = {
    a: 'a value',
    b: 'b value',
    c: 'c value'
};

$("input").click(function(event) {
    var layerClicked = event.target.value;
    alert(layers[layerClicked]);
});


字段:http://jsfiddle.net/rqo6tcy4/

07-24 20:47