javascript - 奇怪的 Chrome JavaScript 表达式行为
问题描述
我在 chrome JavaScript 控制台中遇到了一些奇怪的行为。这怎么可能?
开始是5
词是/[\w$]+/g
z 是"z"
start && word.test(z)
=> false
(start && word.test(z))
=> true
start && (word.test(z))
=> false
解决方案
这与RegExp 全局标志有关。感谢@VLAZ 发现这一点。
具体来说,全局标志是有状态的。问题是代码在同一个会话中运行了多次,但 RegExp 的状态正在改变。
看起来全局有状态 RegExp 的想法是它永远不会匹配字符串的同一部分两次。
推荐阅读
- xml - 为什么在 XML 中附加重复元素?
- c# - 使用 Linq 任何查询或表达式来构建查询以提高性能
- python - 如何处理异常,让脚本继续工作?
- javascript - 'angular-ui-grid' 扩展行问题
- c++ - 是否有内置方法来检测异常值?
- ios - 有没有办法在不使用 NSAttributedString 类的情况下快速创建属性字符串?
- visual-studio - 安装 Visual Studio 2017 和 2019 后如何清除硬盘空间?
- karate - 可以使用 Karate-Gatling 脚本进行分布式测试/集群以进行性能测试吗
- python - 在python中如何计算某些单词出现的次数而不指定单词
- documentation - 自动代码文档的问题 | PHP