我知道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;
但为什么这种行为起初呢?
答案 0 :(得分:1)
eval-ed代码的上下文与调用者的名称空间位于同一名称空间中,因此变量,函数等可用于eval中的代码,但不适用于程序结构本身。