猿问

【诡异的js】一个返回boolean类型的语句,即===true,又===false

reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
reg.test('中文') === true// truereg.test('中文') === false// truetypeof(reg.test('中文'))// "boolean"


慕斯709654
浏览 575回答 2
2回答

拉丁的传说

使用 'g' 标志后,正则会进行多次匹配。每次执行 reg.test,正则匹配的索引会发生变化。换句话说,执行 reg.test 后返回的结果是会发生变化的。第一次执行 reg.test,匹配成功,返回 true,索引走到字符串最后一位;再次执行 reg.test,索引 + 1,匹配失败,返回 false。

慕后森

test() 会保存上次一匹配的索引位置,下次匹配从索引位置开始,匹配失败重置索引,所以第一次是true,第二次是false
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答