2

5行目に「文字列は関数ではありません」というエラーが表示され続けます。

    function SwapCase(str) { 
    var words = []
    var q = str   
      for (var i = 0; i<q.length; i++) {
          if (q(i) === q(i).toLowerCase) {
           var upper = q(i).toUpperCase
              words.push(upper)
         };
         else {
             var lower = q(i).toLowerCase
                 words.push(lower)
         };
       };
     words.join
       return words;

    };
    SwapCase("HeleEer")

私はまだコーディングの初心者であり、セミコロンの欠落やその他のスペースやインデントのエラーについて申し訳ありません。

4

4 に答える 4

7
q(i) 

これは関数呼び出しですが、関数qではなく文字列です。

配列インデックスを使用して、文字列から 1 文字を取得できますq[i]


toLowerCaseこれとは別に、おそらくandtoUpperCase関数を呼び出したいと思うでしょう。
また、words.join2 つの理由から効果がありません。

于 2013-07-24T02:12:54.310 に答える
3

string.toLowerCase()まず、 andを使用する必要がありますstring.toUpperCase()。括弧に注意してください。

第二に、これらのメソッドを適用するオブジェクトは、文字列でなければなりませんq(またはq[i]、SLaks が提案したように、それが必要な場合)。で関数(存在しない) をq(i)呼び出します。q()i

于 2013-07-24T02:13:00.347 に答える
0

あなたはただ一行でそれを行うことができます

function SwapCase(str) {
for (x = ""; x.length < str.length; x += String.fromCharCode((str.charCodeAt(x.length) - 65 + 32) % 64 + 65));
return x;
}

ifステートメントを使用せずに変換するために、少しの数学でASCIIコードを使用しています

于 2013-07-24T02:52:11.647 に答える