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

答案 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'));