我正在尝试创建一个将字符串的字母大小写反转的函数,因此字符串“ John”将为“ jOHN”。
这是我的代码:
const upperLower = function(string){
let newString ="", newChar ="";
for(let i = 0; i < string.length; i++){
if (string.charAt(i) === " "){
newChar = " "
} else if (string.charAt(i) === string.charAt(i).toUpperCase()){
newChar = string.charAt(i).toLowerCase;
} else {
newChar = string.charAt(i).toUpperCase;
}
newString += newChar;
}
return newString;
}
当我使用它时,我得到的是这样的:
"function toLowerCase() { [native code] }function toUpperCase() { [native code] }function toUpperCase() { [native code] }function toUpperCase() { [native code] } function toLowerCase() { [native code] }function toUpperCase() { [native code] }function toUpperCase() { [native code] }function toUpperCase() { [native code] }function toUpperCase() { [native code] }function toLowerCase() { [native code] }"
我哪里出错了,为什么我的结果看起来像这样?谢谢
答案 0 :(得分:0)
您实际上并没有在toLowerCase
条件下呼叫toUpperCase
或else
。您正在引用它们,因此获得了函数的默认字符串表示形式。
{newChar = string.charAt(i).toLowerCase} // <=- Not calling
else {newChar = string.charAt(i).toUpperCase} // <=- Not calling
您需要()
才能真正调用该函数,就像使用toUpperCase()
一样。
不相关,但是代码的格式使其很难阅读。
使其更易于阅读,使调试和思考变得更加容易。如果不是全部都消除了,那么错误将非常清楚。
const upperLower = function(string){
let newString ="", newChar ="";
for (let i=0; i < string.length; i++) {
if (string.charAt(i) === " ") {
newChar = " "
} else if (string.charAt(i) === string.charAt(i).toUpperCase()) {
newChar = string.charAt(i).toLowerCase()
} else {
newChar = string.charAt(i).toUpperCase()
}
newString += newChar;
}
return newString;
}
console.log(upperLower("hELLO"));