无法理解为什么代码给出错误:类型错误:0 是只读的

can't understand why code is giving error: TypeError: 0 is read-only

本文关键字:错误 类型 只读 出错 为什么 代码      更新时间:2023-09-26

我刚刚开始学习JavaScript,并在freecodecamp中尝试篝火问题。我的代码旨在使每个单词的第一个字母大写。法典:

function titleCase(str) {
  str = str.toLowerCase ();
  var arr = str.split(' ');
  for(var i=0; i<arr.length; ++i) {
    arr[i][0] = arr[i][0].toUpperCase();           
  }
   str = arr.join (' ');
   return str;
  //return arr[0][0];
}
titleCase("I'm a little tea pot");

相反,它返回一个错误:
类型错误: 0 是只读的

如果我尝试对字符串进行操作(它们是不可变的),我会理解错误。但是我正在尝试编辑一个完全可变的数组。

我的代码有什么问题?

您的代码没有给出任何错误,但它也没有使第一个字符大写

替换此行

arr[i][0] = arr[i][0].toUpperCase(); 

arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);

arr确实是一个数组。它的元素是可变的,因此您可以将arr[i]替换为另一个字符串。

但是,arr[i]是一个字符串。尝试分配给arr[i][0]无效,因为您正在尝试修改不可变字符串。

该错误来自freeCodeCamp的控制台,该控制台正确地将其标记为非法,但没有给出正确的解释。

你改变了你的Javascript喜欢这个

function titleCase(str) {
str = str.toLowerCase ();
var arr = str.split(' ');
for(var i=0; i<arr.length; ++i) {
 arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);   
}

str = arr.join (' ');
 return str;
//return arr[0][0];
}
titleCase("I'm a little tea pot");
相关文章: