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

在javascript中使用for of的反向字符串,javascript,Javascript,我不明白这是怎么工作的,但是下面的函数很好。我很困惑,循环打印的第一次迭代不是吗h+''=h,它是如何反转的 功能反转(str){ 让我们反向=“” for(str的let char){ 反转=字符+反转 } 反向返回 } log(reverse('hello world'))在for of循环中,char将按顺序排列每个字符(因此,'h',然后'e',等等)。我们首先将反向设置为'(一个空白字符串)。然后身体会这样做: reversed = char + reversed; 因此,这将取r

我不明白这是怎么工作的,但是下面的函数很好。我很困惑,循环打印的第一次迭代不是吗<代码>h+''=h,它是如何反转的

功能反转(str){
让我们反向=“”
for(str的let char){
反转=字符+反转
}
反向返回
}

log(reverse('hello world'))
for of
循环中,
char
将按顺序排列每个字符(因此,
'h'
,然后
'e'
,等等)。我们首先将
反向设置为
'
(一个空白字符串)。然后身体会这样做:

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

  • 在第一个循环中,
    char
    'h'
    ,而
    reversed
    '
    ,因此
    'h'+'
    'h'
    并且
    'h'
    存储在
    reversed
  • 在第二个循环中,
    char
    'e'
    ,而
    反转的
    'h'
    ,因此
    'e'+'h'
    'eh'
    并且
    'eh'
    存储在
    反转的
  • 在第三个循环中,
    char
    'l'
    reversed
    'eh'
    ,因此
    'l'+'eh'
    'leh'
    并且
    'leh'
    存储在
    reversed
……等等

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

作为第二个最佳选项,我们可以添加
console.log
语句来查看发生了什么:

功能反转(str){
让我们反向=“”
for(str的let char){
log(“char=”+char+”,reversed=“+reversed+””);
反转=字符+反转
}
反向返回
}
console.log(反向('hello world'))
此脚本:

 reversed = char + reversed

正在字符串中前置字符。因此,尽管“h”在迭代中是第一个,但它将被放在最终连接字符串的最后一部分。

注意:我添加这个答案只是为了帮助理解OP.

因此,如果在内部循环中添加一个
console.log()
,理解起来相当简单。 基本上
reversed=char+reversed以下是所有逻辑

让我们试着打破它:

1) 内部循环以传递的字符串的第一个字符开始,并将其前置到现有的本地变量
reversed
,因此现在它的
'+h
='h'

2) 现在在第二次迭代中,我们有了
e
。所以在循环中我们有“h”,发生的是
h
=
e+h
,结果是
“eh”

3) 沿着同一条路径,您有一个反向字符串…:D

功能反转(str){
让我们反向=“”
for(str的let char){
反转=字符+反转;
//添加此行以了解其工作原理!
控制台日志(反向);
}
反向返回;
}

log(反向(“hello world”)
它以
h
开头,放在末尾。在每一次迭代中,你都会看到后面的字符被放在前面;这就是行
reversed=char+reversed
没有在循环中打印任何内容。似乎在我发布之前已经发布了答案。无论如何,都无法帮助减缓互联网速度…哈哈