有人能简单地向我解释一下吗?

时间:2017-12-25 19:54:23

标签: javascript loops split

我一直试图绕过这个。我遇到了这个挑战,不明白发生了什么。最重要的是,在for循环中有一个X声明 - 所以你可以在for循环括号中声明两个变量?

var之前没有x - 这意味着它是一个全局变量是否正确?这就是我失去的地方:

str[i] = str[i][0].toUpperCase() + str[i].substr(1);

这是如何输出带有首字母大写字母的整个字符串 - 最后,str[i].substr(1)应该是第二个字母,不是吗? JavaScript是零索引的

在这里挑战:https://www.w3resource.com/javascript-exercises/javascript-basic-exercise-50.php

function capital_letter(str) 
{

    str = str.split(" ");

    for (var i = 0, x = str.length; i < x; i++) {

        str[i] = str[i][0].toUpperCase() + str[i].substr(1);
    }

    return str.join(" ");
}

console.log(capital_letter("Write a JavaScript program to capitalize the first letter of each word of a given string."));

1 个答案:

答案 0 :(得分:0)

代码的逐行分析:

str = str.split(“”); //此行在每个空格字符上拆分给定的字符串str并将其保存为数组格式

用于循环表达式分析:

  • var i = 0,x = str.length //变量'i'初始化为0,'x'初始化为字符串数组str的长度,即16

  • i&lt; X; i ++ // condition判断每次迭代的'i'是否小于'x'意味着循环将运行16次,因为'i'增加1

分析行 - str [i] = str [i] [0] .toUpperCase()+ str [i] .substr(1);

  • str [i] [0] .toUpperCase()//将大写作为每个str索引的第一个字母

  • str [i] .substr(1)//在每个str索引的第一个字母之后占用所有字母

最后,整个单词再次保存在相同的索引

return str.join(“”); //在将其加入大写句子

后返回then str数组