我正在学习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未被修改。是否有任何特定原因不允许在字符串上使用此行为?
答案 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属性赋值没有可观察到的影响。
foreach (var sensor in hardwareItem.Sensors)
{
if (sensor.SensorType == SensorType.Temperature)
{
Console.WriteLine(sensor.Value.ToString());
Console.WriteLine(sensor.Identifier.ToString() + ":" + sensor.Value.ToString());
}
}