在javascript中使用for的反向字符串

时间:2017-12-17 11:41:07

标签: javascript

我不明白这是如何工作的,但下面的功能很好。我很困惑,不是循环打印foreach的第一次迭代? h,它是如何逆转的?



h + '' = h




3 个答案:

答案 0 :(得分:0)

for-of循环中,char将按顺序排列每个字符(因此,'h',然后是'e'等。我们从reversed设置为''(空白字符串)开始。然后身体这样做:

reversed = char + reversed;

这样取reversed中的任何内容并将其添加到char的末尾,然后将结果放入reversed。所以

  • 在第一个循环中,char'h'reversed'',因此'h' + '''h''h'存储在reversed
  • 在第二个循环中,char'e'reversed'h',因此'e' + 'h''eh''eh'存储在reversed
  • 在第三个循环中,char'l'reversed'eh',因此'l' + 'eh''leh''leh'存储在reversed

......等等。

到目前为止,理解这种事情是如何工作的最好方法是使用IDE或浏览器中内置的调试器在函数开头设置断点,然后逐个语句逐步执行。在大多数浏览器中,您可以通过 Ctrl + Shift + I F12 或菜单访问开发人员工具。搜索"(您的浏览器在这里)开发工具"找到描述如何在浏览器中使用devtools的网站,或者#34;(这里是你的IDE)调试器"有关在IDE中使用调试器的信息。

作为非常次佳选项,我们可以添加console.log语句来查看正在进行的操作:



function reverse(str) {
  let reversed = ''
  for (let char of str) {
    console.log("char = '" + char + "', reversed = '" + reversed + "'");
    reversed = char + reversed
  }
  return reversed
}

console.log(reverse('hello world'))




答案 1 :(得分:0)

这个脚本:

 reversed = char + reversed

在字符串中添加char。所以虽然' h'它是迭代中的第一个,它将放在最终连接字符串的最后部分。

答案 2 :(得分:0)

注意:我添加此答案只是为了帮助理解OP。

因此,如果在内部循环中添加console.log(),则很容易理解。 基本上reversed = char + reversed;这就是所有逻辑。

让我们尝试打破它:

1)内部循环以传递的字符串的第一个字符开头,并将其添加到现有的局部变量reversed,因此它现在''+h ='h'

2)现在在第二次迭代中我们有e。所以在循环中我们有'h',结果是h = e + h,结果是"eh"

3)按照相同的路径,你有一个反向的字符串......:D

function reverse(str) {
  let reversed = ''
  for(let char of str){
    reversed = char + reversed;
    // add this line to understand how this works!
    console.log(reversed);
  }
  return reversed;
}

console.log(reverse('hello world'));

相关问题