我从以下代码中获得标题错误:
try {
let n = undefined;
let nx = n?.x;
} catch (err) {
missingFeatures.push("Syntax n?.x not recognized");
}
如您所见,该代码的设计旨在获得对这种语法的支持。但这是行不通的。有什么办法可以捕获此语法错误?
有趣的是,这种情况发生在Android 10上基于 Chrome 的新Edge中。
最佳答案
您可以改为构造一个new Function
,然后查看该函数的构造是否抛出。无需先定义其他变量,因为您只关心语法是否正确,而语法检查则不在乎是否定义了变量,因为该函数永远不会运行:
try {
const fn = new Function('n?.x');
} catch (err) {
missingFeatures.push("Syntax n?.x not recognized");
}
也就是说,测试是否支持特定语法是很奇怪的。除非您为用户编写面向开发的内容(例如实时JavaScript编辑器),否则将代码简单地转换为ES5或ES6进行生产并将其提供给每个人几乎总是更有意义。
关于javascript - Uncaught SyntaxError : Unexpected token '.' - how do I catch it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63733354/