首页 > 解决方案 > 奇怪的 Chrome JavaScript 表达式行为

问题描述

我在 chrome JavaScript 控制台中遇到了一些奇怪的行为。这怎么可能?

开始是5

词是/[\w$]+/g

z 是"z"

start && word.test(z)
=> false
(start && word.test(z))
=> true
start && (word.test(z))
=> false

将控制台输出视为证据

标签: javascriptgoogle-chromegoogle-developer-tools

解决方案


这与RegExp 全局标志有关。感谢@VLAZ 发现这一点。

具体来说,全局标志是有状态的。问题是代码在同一个会话中运行了多次,但 RegExp 的状态正在改变。

看起来全局有状态 RegExp 的想法是它永远不会匹配字符串的同一部分两次。


推荐阅读