JavaScript.告诉我为什么我不能改变索引为j的数组中索引为I的元素

JavaScript. Tell me why I can't change an element at index i in an array at index j

本文关键字:索引 数组 元素 告诉我 不能 能改变 JavaScript 为什么      更新时间:2023-09-26

这行不通,这超出了我的能力。这可能是我的浏览器有问题吗?使用Chrome版本43.0.2357.81 m

var array = ['test', 'this'];
array[0][0] = 'T';
console.log(array);
// expected result ["Test", "this"];
// actual result ["test", "this"]
http://jsfiddle.net/hdh3v5vx/

这个也不能用

array.forEach(function(value, index, a) {
    a[index][0] = value[0].toUpperCase();
});

无法为字符串指定索引。但是,您可以替换整个字符串(array[0] = 'Test')或执行以下操作:

var firstString = array[0].split('');
firstString[0] = 'T';
array[0] = firstString.join('');

如果您希望将不同单词的第一个字母大写,我建议编写一个辅助函数来完成此操作。

你不能像这样修改字符串,它是一个原语

如果有人能给我提供一份标准的摘录,那就太好了。

该逻辑在ES5规范的§8.7.2中描述,具体为4.a.

如果HasPrimitiveBase(V)false,则设为碱的[[Put]]内部方法,否则设为下面定义的特殊的[[Put]]内部方法。

,然后是特殊的[[Put]]的注释(如 HasPrimitiveBase(V)返回true,如果基值是布尔值,字符串或数字。)

在步骤1中创建的对象不能在上述方法之外访问

。通过设置,您创建了一个具有属性集的新对象,但该对象不是字符串您有

的引用