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

标签 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;

但为什么首先会出现这种行为?

最佳答案

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

关于javascript - 为什么 eval() 在这里不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439589/

相关文章:

javascript - 点击两次后切换

javascript - 动态过滤具有 <href> 链接元素作为列数据的 HTML 表行

javascript - 无法将带有单引号的变量附加到 anchor 标记的标题

javascript - 路由更改时重新渲染脚本

javascript - Protractor 是否适用于 Angular Material 对话框弹出窗口?

javascript - 在路由更改时更改状态 Next.js

javascript - 如何在本地导入Vue/Nuxt.js中的CSS框架?

javascript - 子窗口关闭时如何调用父窗口的JavaScript函数?

javascript - 在 Angular 中,如何将服务注入(inject) Controller ?

javascript - RegEx 返回一个结果而不是两个