gpt4 book ai didi

由于 RegExp 语法,JavaScript block 注释过早结束

转载 作者:行者123 更新时间:2023-11-30 06:13:03 25 4
gpt4 key购买 nike

这本身不是编程问题,更多的是关于 ECMAScript/JavaScript 规范的问题。

考虑以下 JS。

let myexpr = /\*/; // Equivalent to `new RegExp("\\*")`

很好,一个匹配字符 * 的正则表达式。但是如果我们尝试 block 评论

/*
let myexpr = /\*/; // Equivalent to `new RegExp("\\*")`
*/

我们发现正则表达式中的转义符和结束分隔符会导致 block 注释过早结束,并且解释器会尝试执行 */,这是一个明显非法的表达式。我们可以通过放弃 RegExp 构造函数的正则表达式语法来明确地解决这个问题,但这可能需要更多的转义字符并牺牲可读性。

我想我的问题是:为什么 ES 和/或 JS 规范允许序列 */ 终止正则表达式中的注释,而不是例如字符串中的注释?

最佳答案

注释中的所有文本都不是代码。在找到 */ 之前全部跳过。由于文本中有 =/\*/;,编译器将看到 */ 并比您预期的更早终止注释 block 。

如果你注释掉一行,你就不会有那个问题:

// let myexpr = /\*/; // Equivalent to `new RegExp("\\*")`

关于由于 RegExp 语法,JavaScript block 注释过早结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57743164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com