基本解决方案是:<!-- 开始代码段:js-hide:false控制台:true babel:false--><!-- 语言:lang-js-->函数大写FirstLetter(字符串){return string.charAt(0).toUpperCase()+string.slice(1);}console.log(大写首字母('foo'));//console.log(大写首字母(“𐐶𐐲𐑌𐐼𐐲𐑉")); // "𐐶𐐲𐑌𐐼𐐲𐑉“(不正确!)console.log(大写首字母(“ijsselmeer”);//IJsselmeer“(不正确!)<!-- 结束代码段-->但当你考虑国际化和非拉丁字符时,这个问题还有很多,正如[这个令人惊讶的好答案][1](埋在下面)所示。如果您想使用Unicode代码点而不是代码单元(例如,在基本多语言平面之外处理Unicode字符),可以利用“String[@iterator]`可以使用代码点的事实:<!-- 开始代码段:js-hide:false控制台:true babel:false--><!-- 语言:lang-js-->函数capitalieFirstLetter([first,…rest],locale=navigator.language){return[first.toLocaleUpperCase(locale),…rest].join('');}console.log(大写首字母('foo'));//console.log(大写首字母(“𐐶𐐲𐑌𐐼𐐲𐑉")); // "𐐎𐐲𐑌𐐼𐐲𐑉“(正确!)console.log(大写第一个字母(“mbainann”,'ga'));//IJsselmeer“(不正确!)<!-- 结束代码段-->考虑到在某些语言中,首字母大写并不总是字符串中的第一个字母:```javascript脚本函数capitalieFirstLetter(str,locale=navigator.language){return str.replace(/^\p{CWU}/u,char=>char.toLocaleUpperCase(语言环境));}console.log(大写首字母('foo'));//console.log(大写首字母(“𐐶𐐲𐑌𐐼𐐲𐑉")); // "𐐎𐐲𐑌𐐼𐐲𐑉“(正确!)console.log(大写首字母(“ijsselmeer”);//IJsselmeer“(正确!)大写首字母('mbaineann','ga');//“mBaineann”```其他一些答案修改了“String.prototype”(这个答案以前也有),但我建议现在不要这样做,因为它具有可维护性(很难找出函数被添加到“prototype“的位置,如果其他代码使用相同的名称,可能会导致冲突/浏览器将来会添加同名的本机函数)。[1]: https://stackoverflow.com/a/53930826/38522