为什么这个变量不会改变?

时间:2013-07-26 15:36:36

标签: javascript

在这段代码中:

function change(s)
{
  var number = s.replace(/\s+/g, '');
  for(var i = 0; i < number.length ; i++)
  {
    console.log(number[i]); //Line1
    number[i] = '1';
    console.log(number[i]); //Line2
  }
}

Line1和Line2的结果都是一样的(它们返回“2”)!这是怎么回事?!

3 个答案:

答案 0 :(得分:12)

JavaScript中的字符串是不可变的。你不能改变它们,所以这条线什么都不做

number[i] = '1';

答案 1 :(得分:1)

您正在尝试将字符串作为数组读取。 Char by Char。看起来JS在这种情况下不允许改变任何索引的值。如果您执行以下操作:number =“12345”,则索引处的值:(I)将更改。但这并不能解决你的目的。要做你想做的事情,你应该拆分数字,然后迭代和改变。

一个例子:

function change(s) {
    var number = s.replace(/\s+/g, '');
    var sArr = number.split("");
    for (var i = 0; i < number.length ; i++) {
    console.log(sArr[i]); //Line1 (prints original)
    sArr[i] = i;
    console.log(sArr[i]); //Line2 (prints changed)
    }
    }

答案 2 :(得分:0)

我不能完全告诉你你想从中得到什么,但我认为这会做到吗?

function change(s)
{
    var number = s.replace(/\s+/g, '');
    var newstring = number;
    for(var i = 0; i < number.length ; i++)
    {
        console.log(number[i]); //Line1
        newstring[i] = '1';
        console.log(number[i]); //Line2
    }
    return(newstring); //or something to that effect
}

现在,这实际上是一种毫无意义的代码,我假设你将用更有用的东西替换'1'。