此功能在Chrome中引發「無效訪問」錯誤,在IE(pirate_bar_pirate_baz)中返回錯誤結果,並在Firefox中正常工作(pirate_bar_ninja_baz)。如果從正則表達式中刪除全局標誌,它可以正常工作,但僅適用於第一個「foo」而不是兩個。有什麼問題?爲什麼RegExp.rightContext在匿名函數內引發無效訪問錯誤?
regex = /foo/g;
//regex = /foo/;
"foo_bar_foo_baz".replace(regex, function(str) {
if (RegExp.rightContext == "_baz") {
return "ninja";
} else {
return "pirate";
}
});
似乎是一個錯誤。 ''xx「.replace(/ x/g,function(){RegExp.rightContext;});'也會拋出''非法訪問''在Chrome中,而只是取得屬性不應該這樣做,我假設。 – pimvdb 2012-02-06 21:01:19
該屬性已棄用,因此不應再使用,可能不會收到修復程序。請參閱https://developer.mozilla.org/en/JavaScript/Reference/Deprecated_Features使用不同的表達式將字符串包含在您需要的if中。 – 2012-02-06 21:04:59