为什么在使用我的函数时会得到[本机代码]

时间:2018-07-09 14:39:13

标签: javascript native-code

我正在尝试创建一个将字符串的字母大小写反转的函数,因此字符串“ 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] }"

我哪里出错了,为什么我的结果看起来像这样?谢谢

1 个答案:

答案 0 :(得分:0)

您实际上并没有在toLowerCase条件下呼叫toUpperCaseelse。您正在引用它们,因此获得了函数的默认字符串表示形式。

{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"));