Javascript 我应该放下';新';在这个函数中传递regexp?

Javascript 我应该放下';新';在这个函数中传递regexp?,javascript,regex,Javascript,Regex,我正在查看在此场景中使用new RegExp()vsRegExp()的结果: 函数删除字(str,rexp){ 返回str.replace(rexp,“”) } var example1=“我喜欢美味的花生!”; var_word=“花生”; var build_rexp_from_var=new RegExp(禁用的单词“g”); //方法1->removeWord(示例1,/peanuts/g) //方法2->removeWord(示例1,从变量构建rexp) //哪一种应该是我的方法#3?

我正在查看在此场景中使用
new RegExp()
vs
RegExp()
的结果:

函数删除字(str,rexp){
返回str.replace(rexp,“”)
}
var example1=“我喜欢美味的花生!”;
var_word=“花生”;
var build_rexp_from_var=new RegExp(禁用的单词“g”);
//方法1->removeWord(示例1,/peanuts/g)
//方法2->removeWord(示例1,从变量构建rexp)
//哪一种应该是我的方法#3?
log(removeWord(例如1,RegExp(禁止的单词,“g”));
log(removeWord(例如1,newregexp(禁止的单词,“g”));
我希望避免从var创建var
build\u rexp\u,因为这是不必要的。这两种方法似乎都有效,但我想知道使用一种方法与使用另一种方法的区别。

RegExp(“foo”)
newregexp(“foo”)
做同样的事情:

15.10.3作为函数调用的RegExp构造函数

15.10.3.1正则表达式(模式、标志)

如果pattern是一个对象R,其[[Class]]内部属性为“RegExp”,且标志未定义,则返回R unchanged否则调用标准的内置RegExp构造函数(15.10.4.1),就像调用表达式new RegExp(pattern,flags)一样,并返回该构造函数构造的对象。

更简单地说,
RegExp(/someRegex/)
返回该regex,而
RegExp(“someString”)
从字符串创建一个新的RegExp,就像
new RegExp
所做的一样。

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

15.10.3作为函数调用的RegExp构造函数

15.10.3.1正则表达式(模式、标志)

如果pattern是一个对象R,其[[Class]]内部属性为“RegExp”,且标志未定义,则返回R unchanged否则调用标准的内置RegExp构造函数(15.10.4.1),就像调用表达式new RegExp(pattern,flags)一样,并返回该构造函数构造的对象。


更简单地说,
RegExp(/someRegex/)
返回该regex,而
RegExp(“someString”)
从该字符串创建一个新的RegExp,就像
new RegExp
那样。

这应该给您更多信息:不,这是不同的,我没有创建那种类型的RegExpobjects@Mathletics我还是很困惑,谢谢你毁了我的大喜,不客气,这里出了点问题。“复制品”与这个问题无关。这应该给你更多的信息:不,这是不同的,我不是在创造那种东西objects@Mathletics我还是很困惑,谢谢你毁了我的日子我,呃,不客气,这里出了点问题。“复制”与问题无关。好的,我的结论是:如果要将其创建为var
var x=new RegExp(…),请使用new。但是如果直接使用它,只需使用
RegExp(…)
,我看到了一个在ECMAScript 7规范中直接使用它的示例,它是用更简单的英语编写的。第21.2.3节:“当作为函数而不是构造函数调用RegExp时,它会创建并初始化一个新的RegExp对象。因此,函数调用RegExp(…)相当于具有相同参数的对象创建表达式new RegExp(…)。”请参阅。一致地使用“new”关键字似乎是更好的形式,因为它清楚地表明了返回值是什么:一个新的RegExp对象。好的,我的结论是:如果要将其创建为var
var x=new RegExp(…),则使用new。但是如果直接使用它,只需使用
RegExp(…)
,我看到了一个在ECMAScript 7规范中直接使用它的示例,它是用更简单的英语编写的。第21.2.3节:“当作为函数而不是构造函数调用RegExp时,它会创建并初始化一个新的RegExp对象。因此,函数调用RegExp(…)相当于具有相同参数的对象创建表达式new RegExp(…)。”请参阅。一致地使用“new”关键字似乎是更好的形式,因为它明确了返回值是什么:一个新的RegExp对象。