我读到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(使用前将#替换为@)