Javascript.replace()在控制台和live中的功能不同

Javascript.replace()在控制台和live中的功能不同,javascript,string,Javascript,String,我试图在Javascript中对文本变量进行一些基本的字符串操作。我有几行代码如下所示: var someVar = 'first+last@domain.com'; var cleanVar = someVar.replace('@','_').replace('+','_'); var someVar = 'first+last@domain.com'; var cleanVar = someVar.replace('@','_'); var cleanVar2 = cleanVar.re

我试图在Javascript中对文本变量进行一些基本的字符串操作。我有几行代码如下所示:

var someVar = 'first+last@domain.com';
var cleanVar = someVar.replace('@','_').replace('+','_');
var someVar = 'first+last@domain.com';
var cleanVar = someVar.replace('@','_');
var cleanVar2 = cleanVar.replace('+','_');
当我在Chrome的Javascript控制台中运行此代码时,
cleanVar
的值是
first\u last\u domain.com
。。。这正是我们想要的。当此代码在浏览器的live页面上运行时,
replace()
始终适用于
@
字符,但绝不适用于
+

为了调试这一点,我尝试将
.replace('@',''''''
的位置替换为
.replace('+',''''''.''''
),甚至出现如下情况:

var someVar = 'first+last@domain.com';
var cleanVar = someVar.replace('@','_').replace('+','_');
var someVar = 'first+last@domain.com';
var cleanVar = someVar.replace('@','_');
var cleanVar2 = cleanVar.replace('+','_');

我肯定错过了一些基本的东西。我知道
+
组合了Javascript中的字符串。。。但是当被引号包围时,不是吗?

这个正则表达式方法对我有效:

var cleanVar = someVar.replace(/[+@]/g,'_');
(由某人先前发布,然后删除)


如评论员所述,这将替换
@
+
的所有实例。移除
g
以仅针对第一个
@
+

。这两个日志都在fiddle中记录
first\u last\u domain.com
。您记录了一个错误的变量?可能是重复的,您只是做错了什么。运行的代码按预期工作,就像控制台运行的代码不是dup一样,OP说一个字符根本不会被替换,尽管它不能用提供的代码复制。问题显然不是如何替换字符串中的所有出现,是吗?一句话也不能回答这个问题