不使用 Eval 执行 Javascript 中的字符串

Execute String In Javascript Without Eval

我用 eval 做到了,但我读到了 eval is evil。所以我很好奇:没有eval()我怎么写这个?。我已经尝试了一些示例,但没有用。没有 eval 是否可以做到这一点,或者 eval 是唯一的方法吗?

$(".test").each(function(){
    var xyz = "";
    var w = $(this).last().attr("name");
    for(var i=0; i< (w-1);i++){
        var xyz = xyz + ".prev()";
    }
    var x = '$(this).first().parent()' + xyz;
    var y = x + '.find("td.one").attr("rowspan",'+w+');';
    eval(y);    
});

eval() 不是邪恶的,它只是几乎总是错误的工作工具。例如,您的算法可以在完全不乱用字符串的情况下实现,因此您不需要考虑 eval():

$(".test").each(function(){
    var w = $(this).attr("name");
    var el = $(this).parent();
    for(var i=0; i < w-1; i++){
        el = el.prev();
    }
    el.find("td.one").attr("rowspan", w);
});

另请注意,您对 .last().first() 的使用是多余的,因为在您的 .each() 循环中 this 将引用单个 DOM 节点.