没有使用变量partsOfName,那么为什么要创建它呢?此外,part1、part2和part3在函数运行后被创建为全局变量,因为它们没有被声明。part2的子字符串应该扩展到索引 9(它实际上在指定索引之前立即停止)。从索引到结尾选择时,可以省略结尾索引。考虑:
var part1 = myName.substring(0, 5);
var part2 = myName.substring(5, 9);
var part3 = myName.substring(9);
在您的代码中:
> part1 = part1.charAt(0).toUpperCase() + part1.slice(1);
> part2 = part2.charAt(5).toUpperCase() + part2.slice(1);
> part3 = part3.charAt(9).toUpperCase() + part3.slice(1);
字符索引应该全部为零,因为您想将第一个字符大写,所以:
part1 = part1.charAt(0).toUpperCase() + part1.slice(1);
part2 = part2.charAt(0).toUpperCase() + part2.slice(1);
part3 = part3.charAt(0).toUpperCase() + part3.slice(1);
最后,不要在声明的地方使用函数表达式,有一些细微的差异会让你感到困惑:
function fixName(myName) {
var part1 = myName.substring(0, 5);
var part2 = myName.substring(5, 9);
var part3 = myName.substring(9);
part1 = part1.charAt(0).toUpperCase() + part1.slice(1);
part2 = part2.charAt(0).toUpperCase() + part2.slice(1);
part3 = part3.charAt(0).toUpperCase() + part3.slice(1);
return(part1+" "+part2+" "+part3);
}
var myName= "brianwadestacks";
console.log("My name fixed is " + fixName(myName)); // My name fixed is Brian Wade Stacks