这是eval()的错误用法吗

时间:2014-12-18 12:05:04

标签: javascript leaflet

我试图找出如何使用eval()来解决这个问题。基本上我需要在我的代码中使用一个字符串,但是引号的存在似乎搞砸了,所以我的方法就是评估我的原始变量......

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

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

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

提前致谢, 罗文<​​/ P>

2 个答案:

答案 0 :(得分:2)

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

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

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

FIDDLE: http://jsfiddle.net/rqo6tcy4/

答案 1 :(得分:0)

eval()函数计算或执行参数。

如果参数是表达式,则eval()计算表达式。如果参数是一个或多个JavaScript语句,则eval()执行语句。

我不知道你想要实现什么但是因为那个图层层次似乎不是一个数学表达式,也不是一个块javascript语句,你做错了...