动态添加到空字符串

时间:2013-08-30 20:19:09

标签: javascript

我正在尝试将非空字符串中的每个字符分配给空字符串(制作副本)。这是我的代码:

x = "example";
y = "";

for (var i = 0; i < x.length; i++) {
    y.charAt(i) = x.charAt(i);
}

alert(y);

但是,我在控制台中收到以下错误:

ReferenceError: invalid assignment left-hand side
y.charAt(i) = x.charAt(i);

我认为可以动态增长非空字符串(希望我使用正确的术语)。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:0)

未定义空字符串中的"".charAt(0)。实际上,"a".charAt(0)是“a”。

你为什么不连接?

x = "example";
y = "";

//Simplest way:
y += x;

//With characters:
for (var i = 0; i < x.length; i++) {
    y += x.charAt(i);
}

答案 1 :(得分:0)

charAt(x)会返回一个字符串,其中包含字符串x的{​​{1}}位置的字符,但不会将链接返回到该位置,因此,它不等于C的this表示法,它返回指向字符所在字节的链接。 因此,[]分配无效,charAt(x)=也不是。

无论如何,无论"a"="b"是什么,你都不能"".charAt(x),因为字符串是空的。

无论如何,由于第一段中描述的原因,你甚至不能x

因此,更改字符串中某些字符的唯一方法是"a".charAt(0)="b",这在大多数浏览器中都有效。但是你仍然不能str[x],所以你应该首先创建一个与你要复制的字符串长度相同的字符串,或者使用连接。

答案 2 :(得分:-1)

有可能。这是正确的方法:

x = "example";  
y = "";

for (var i = 0; i < x.length; i++) {
    y += x.charAt(i);
}

您的方法不正确,因为 charAt(i)方法返回位置i处的char的(只读)值。

相反,赋值运算符(例如=)会将op =右侧的值存储到左侧的变量中。

在这种情况下,y += x.charAt(i)等于y = y + x.charAt(i)

e.g:

第一次迭代:

x = "example";
y = ""

i = 0
x.charAt(i) == x.charAt(0) == "e"
y += x.charAt(i) -> y = y + x.charAt(i) -> y = y + x.charAt(0) -> y = y + "e" -> y = "" + "e" = e

第二次迭代:

x = "example";
y = "e"

i = 1
x.charAt(i) == x.charAt(1) == "x"
y += x.charAt(i) -> y = y + x.charAt(i) -> y = y + x.charAt(1) -> y = y + "x" -> y = "e" + "x"

依旧......

在每一步中,字符串x的位置i的字符将附加到字符串y和最后x === y