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

问题描述 投票:-1回答:1

我一直试图绕过这个。我遇到了这个挑战,不明白发生了什么。最重要的是,在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."));
javascript loops split
1个回答
0
投票

逐行分析代码:

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

对于循环表达式分析:

  • var i = 0,x = str.length //变量'i'初始化为0,'x'初始化为字符串数组str的长度,即16
  • 我<x; i ++ // condition判断每次迭代的'i'是否小于'x',意味着当'i'加1时循环将运行16次

分析行 - 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数组

© www.soinside.com 2019 - 2024. All rights reserved.