为什么Javascript replace()函数什么都不做?

时间:2013-09-05 23:15:47

标签: javascript

这是我的功能:

CSS_Left = '450px';
CSS_Left.replace('px', '');
alert(CSS_Left);

返回'450px'

以下是一个例子:

http://jsfiddle.net/D2Mgb/

我希望它用什么都不替换'px'。

4 个答案:

答案 0 :(得分:4)

在JavaScript中,Strings是不可变的。

  

除对象外的所有类型都定义了不可变值。具体来说,字符串是不可变的(例如,与C不同)。

因此,str.replace返回一个新字符串。试试这个:

CSS_Left = CSS_Left.replace('px', '');

或者,如果您不想覆盖原始字符串,只需在alert调用中执行

alert(CSS_Left.replace('px', ''));

值得注意的是.replace也可以采用正则表达式。虽然在你的情况下没有必要,你可以做这样的事情来实现相同的结果

CSS_Left = CSS_left.replace(/px$/, '');

答案 1 :(得分:3)

因为.replace()返回一个新字符串。如果你想更新旧字符串,你应该写: CSS_Left = CSS_Left.replace('px', '');

答案 2 :(得分:0)

我不确定,但函数replace()会创建一个新变量。 试试这个:

var CSS_Left = '450px';
CSS_Left = CSS_Left.replace('px', '');
alert(CSS_Left);

答案 3 :(得分:0)

需要将replace调用的输出重新分配给CSS_Left