检查代码是否是有效的JavaScript而不实际评估它

Mai*_*tor 5 javascript eval compilation

是否有一个函数来测试片段是否是有效的JavaScript而没有实际评估它?也就是说,相当于

function validate(code){
    try { eval(code); } 
    catch(err) { return false; }
    return true;
};
Run Code Online (Sandbox Code Playgroud)

没有副作用.

Art*_*lev 11

就在这里.

new Function(code);
Run Code Online (Sandbox Code Playgroud)

SyntaxError如果代码无效,则抛出一个Javascript.(ECMA-262,版本5.1,§15.3.2.1保证如果code不可解析则抛出异常).

注意:此代码段仅检查语法有效性.例如,由于未定义的引用,代码仍然可以抛出异常.检查它是一种更难的方法:您要么应该评估代码(并获得所有副作用),要么解析代码并模拟其执行(即在JS中编写JS虚拟机).