为什么我的 Javascript 中的两个正则表达式文字在属性上有所不同?

2023-12-13

我读到Javascript:好的部分Douglas Crockford 指出,JavaScript 正则表达式文字共享同一个对象。如果是这样,那么这两个正则表达式文字为何会有所不同lastIndex财产?

var a = /a/g;
var b = /a/g;

a.lastIndex = 3;
document.write(b.lastIndex);​

JSFiddle

输出 0,而不是 3。


第 7.8.5 条ECMAScript 文档很清楚它们是两个不同的对象:

7.8.5 正则表达式文字
正则表达式文字是一个输入元素,每次计算文字时都会将其转换为 RegExp 对象(请参阅 15.10)。程序中的两个正则表达式文字计算结果为正则表达式对象,即使这两个文字的内容相同,它们也不会相互比较为 ===。 RegExp 对象也可以在运行时通过 new RegExp 创建(参见 15.10.4)或将 RegExp 构造函数作为函数调用(15.10.3)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 Javascript 中的两个正则表达式文字在属性上有所不同? 的相关文章

随机推荐