gpt4 book ai didi

javascript - 我应该在传递正则表达式的函数中删除 'new' 吗?

转载 作者:行者123 更新时间:2023-11-28 20:19:20 25 4
gpt4 key购买 nike

我正在寻找使用 new RegExp() 的后果与 RegExp()在这种情况下:

        function removeWord(str,rexp){
return str.replace(rexp,"")
}

var example1="I like tasty peanuts!";

var banned_word="peanuts";
var build_rexp_from_var=new RegExp(banned_word,"g");

//method #1 -> removeWord(example1,/peanuts/g)
//method #2 -> removeWord(example1,build_rexp_from_var)

//which should be my method #3?
console.log(removeWord(example1,RegExp(banned_word,"g")));
console.log(removeWord(example1,new RegExp(banned_word,"g")));

我想避免创建 var build_rexp_from_var因为这是不必要的。两者似乎都有效,但我想知道使用其中一种与另一种可能存在的差异。

最佳答案

RegExp("foo")new RegExp("foo") 做同样的事情:

15.10.3 The RegExp Constructor Called as a Function

15.10.3.1 RegExp(pattern, flags)

If pattern is an object R whose [[Class]] internal property is "RegExp" and flags is undefined, then return R unchanged. Otherwise call the standard built-in RegExp constructor (15.10.4.1) as if by the expression new RegExp( pattern, flags) and return the object constructed by that constructor.

http://es5.github.io/#x15.10.3

简单来说,RegExp(/someRegex/) 返回该正则表达式,而 RegExp("someString") 从字符串创建一个新的正则表达式,就像 new RegExp 可以。

关于javascript - 我应该在传递正则表达式的函数中删除 'new' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com