Mik*_*ans 15 javascript browser
要快速查看"不使用新函数"和/或"eval是邪恶"的长注释部分,此问题是关于如何可能访问与new Function()构造函数失败相关的错误信息.在规范和标准浏览器实现允许的范围内尝试利用JavaScript时,发现浏览器允许我做的限制主要是一个问题.所以有了免责声明:
通过新的Function()调用来评估代码时,是否有办法找出函数内容中出现语法错误的位置,是否正在评估非法语法代码?即:
try {
var generator = new Function(input);
try {
generator();
}
catch (runtimeError) {
console.error("legal code; unforeseen result: ", runtimeError);
}
}
catch (syntaxError) {
console.error("illegal code; syntax errors: ", syntaxError);
}
Run Code Online (Sandbox Code Playgroud)
当生成器的构建失败时,有没有办法找出(从浏览器,不使用jslint或其他外部库)错误是什么或它发生在哪里?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype提到SyntaxError有一个filename和linenumber属性,但是对于通过新函数()评估的动态代码,这些是未定义的我可以告诉构造函数,所以依赖于错误对象本身似乎不是一个选择.是否有其他方法可以将代码引入浏览器,以便代码一旦我们知道它有来自失败的新函数调用的语法错误,就可以根据所使用的JS引擎找出问题所在?
(当然,如果目标是简单地找到语法错误,那么jslint作为预处理步骤将成为首选解决方案,但我更感兴趣的是浏览器是否能以某种方式报告此信息,甚至如果是有限的形式,如"在线/ char上有一些错误......")
| 归档时间: |
|
| 查看次数: |
2666 次 |
| 最近记录: |