为什么我们不能修改javascript中的字符串长度,因为我们可以修改数组的长度?

时间:2018-03-19 15:15:14

标签: javascript

我正在学习javascript。在其中一个文档中,我读过我们可以修改数组的长度。我尝试如下,它有效。

var array = new Array(1, 2, 3, 4 ,5);
array.length = 4;

现在数组变为[1,2,3,4]。

但同样不适用于弦乐。

var str = new String("abcdef");
str.length = 5;

str未被修改。是否有任何特定原因不允许在字符串上使用此行为?

5 个答案:

答案 0 :(得分:3)

字符串在设计上是不可变的。您无法更改它们,但可以将引用重新分配给新的字符串值。如果要缩短字符串,可以使用String slice()方法。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice

答案 1 :(得分:3)

字符串是不可变的。对于字符串的新长度,您需要一个以新长度复制字符串的赋值。



var string = 'abcdef';

string = string.slice(0, 4);

console.log(string);




答案 2 :(得分:2)

.length属性对字符串的使用方式不同,因为它们是不可变的: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length

如果要更改字符串的长度,可以使用slice创建新字符串。

答案 3 :(得分:1)

在控制台中记录String 对象时,您可以看到为什么这不起作用:



var str = new String("abcdef");
str.length = 5;
console.log(str)




因此,您无法在此处设置length属性。我们正在谈论"不变性" JavaScript中的字符串。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length

答案 4 :(得分:0)

  

尝试为字符串的.length属性赋值没有可观察到的影响。

     

MDN Link

foreach (var sensor in hardwareItem.Sensors)
{
    if (sensor.SensorType == SensorType.Temperature)
    {
        Console.WriteLine(sensor.Value.ToString());
        Console.WriteLine(sensor.Identifier.ToString() + ":" + sensor.Value.ToString());
    }
}