変数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