2016-01-27 31 views
0

我正在尝试编写一个函数,它接受字符串并将所有小写字母改为大写,反之亦然。 “低高”将转化为“低高”反字符串大小写(javascript)

继承人我有:

var convertString = function (str){ 
var s = ''; 
var i = 0; 
while (i < str.length) { 
    var n = str.charAt(i); 
     if (n == n.toUpperCase()) { 
      n = n.toLowerCase; 
     } 
     else { 
      n = n.toUpperCase; 
     } 

i +=1; 
s += n; 

} 
return s; 
}; 
convertString("lower UPPER"); 

我使用this website工作,我得到一个输出非常奇怪的消息。

Here is a pic of what happens after I run it.

+1

'toUpperCase()' –

+0

''lower UPPER'.replace(/./ g,c => c === c.toUpperCase()?c.toLowerCase():c.toUpperCase())' – zerkms

回答

0

你刚才的一切是正确的,除了你if语句里面。您正在设置n等于其toLowerCasetoUpperCase方法,而不是其返回值。你需要调用这些方法并设置n等于其返回值:

var convertString = function (str) { 
    var s = ''; 
    var i = 0; 
    while (i < str.length) { 
     var n = str.charAt(i); 
     if (n == n.toUpperCase()) { 
      // *Call* toLowerCase 
      n = n.toLowerCase(); 
     } else { 
      // *Call* toUpperCase 
      n = n.toUpperCase(); 
     } 

     i += 1; 
     s += n; 
    } 
    return s; 
}; 

convertString("lower UPPER"); 

你得到的输出('function toUpperCase() { [native code] }...)是每一种方法的结果被转换为字符串,然后再连接到你的结果字符串。您可以通过在控制台上运行这些命令中得到相同的结果:

  • console.log("".toUpperCase);
  • console.log("".toUpperCase.toString());

两者的结果是function toUpperCase() { [native code] }

快乐编码!

+0

Ahhh几乎!谢谢您的帮助! – seanyesmunt