ScriptLab中使用Nullish Coalescing运算符报错是否为已知Bug?
问题
我需要让函数的可选参数能接收0或false这类有效值,所以用??运算符代替||来设置默认值,避免有效值被默认值覆盖。示例代码如下:
function myfunction(param1: number, param2?: number): number { param2 = param2 ?? 1 console.log(param2) return param2 }
这段代码实际运行完全正常,但ScriptLab编辑器却提示语法错误,请问这是ScriptLab的已知Bug吗?
解答
这是ScriptLab的已知兼容性问题。ScriptLab的语法校验模块对ES2020及之后的新特性支持不完善,??空值合并运算符是ES2020引入的特性,编辑器的校验逻辑还没跟上,所以会误报语法错误。不过代码实际运行不受影响,因为宿主环境(比如浏览器)已经支持该语法。
如果要规避编辑器的报错提示,可以改用ES2020之前的兼容写法,通过条件判断实现相同逻辑:
function myfunction(param1: number, param2?: number): number { param2 = (param2 === undefined || param2 === null) ? 1 : param2; console.log(param2) return param2 }
这样既能保留原有的参数处理逻辑,又能让ScriptLab的语法校验通过。
内容的提问来源于stack exchange,提问作者smozgur
相关产品推荐
相关产品推荐

