为什么eval()在这里不起作用?

时间:2014-03-16 16:34:20

标签: javascript

首先

我知道eval()是邪恶的,但这是一个理论上的问题。

假设我有一个循环:

function loop() {
    for(var i = 0 ;i <= 10; i++) {
        $('ul').append('RUN :' + i + '<br>');
            eval('break;');
    }
}

虽然只是将break;放在eval()的位置,但是当使用eval('break;')完成同样的操作时,会导致错误“Uncaught SyntaxError:Illegal break statement”

另外,我知道打破循环,我可以使用:

return false;

但为什么这种行为起初呢?

1 个答案:

答案 0 :(得分:1)

eval-ed代码的上下文与调用者的名称空间位于同一名称空间中,因此变量,函数等可用于eval中的代码,但不适用于程序结构本身。