Uncaught SyntaxError: Unexpected token '.' - how do I catch it?
Uncaught SyntaxError: Unexpected token '.' - how do I catch it?
我从这段代码中得到标题中的错误:
try {
let n = undefined;
let nx = n?.x;
} catch (err) {
missingFeatures.push("Syntax n?.x not recognized");
}
如您所见,代码的设计是希望能够支持这种语法。
但它不起作用。有什么办法可以捕捉到这个语法错误吗?
有点有趣的是,这发生在 Android 10.
的基于铬的新 Edge 中
你可以构造一个new Function
来代替,看看函数的构造是否抛出。不需要先定义其他变量,因为你只关心语法是否正确,语法检查不关心变量是否定义,因为函数永远不会得到 运行:
try {
const fn = new Function('n?.x');
} catch (err) {
missingFeatures.push("Syntax n?.x not recognized");
}
也就是说,测试是否支持特定语法是很奇怪的。除非您正在为用户编写 dev-oriented 的东西(例如实时 JavaScript 编辑器),否则将您的代码简单地转换为 ES5 或 ES6 以用于生产并将其提供给所有人几乎总是更有意义.
我从这段代码中得到标题中的错误:
try {
let n = undefined;
let nx = n?.x;
} catch (err) {
missingFeatures.push("Syntax n?.x not recognized");
}
如您所见,代码的设计是希望能够支持这种语法。 但它不起作用。有什么办法可以捕捉到这个语法错误吗?
有点有趣的是,这发生在 Android 10.
的基于铬的新 Edge 中你可以构造一个new Function
来代替,看看函数的构造是否抛出。不需要先定义其他变量,因为你只关心语法是否正确,语法检查不关心变量是否定义,因为函数永远不会得到 运行:
try {
const fn = new Function('n?.x');
} catch (err) {
missingFeatures.push("Syntax n?.x not recognized");
}
也就是说,测试是否支持特定语法是很奇怪的。除非您正在为用户编写 dev-oriented 的东西(例如实时 JavaScript 编辑器),否则将您的代码简单地转换为 ES5 或 ES6 以用于生产并将其提供给所有人几乎总是更有意义.