反转字符串大小写

sea*_*unt 3 javascript string

我正在尝试编写一个函数,该函数接受字符串并将所有小写字母更改为大写字母,反之亦然。“lower UPPER”将翻译为“LOWER upper”

这是我所拥有的:

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");
Run Code Online (Sandbox Code Playgroud)

我正在使用这个网站工作,并且输出了一条非常奇怪的消息。

这是我运行后发生的情况的图片。

Hat*_*het 6

除了在您的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");
Run Code Online (Sandbox Code Playgroud)

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

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

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

快乐编码!