咨询JS字符串反转函数工作原理:reversed = el + reversed为何能实现反转?
解惑:为什么这段JavaScript代码能把'baca'反转为'acab'?
先看你贴的这段代码:
function reverse(str) { var reversed = ''; for (let el of str) { reversed = el + reversed; } return reversed; } console.log(reverse('baca')); // 输出: acab
你的困惑主要来自两个误解,咱们一个个掰扯清楚:
第一个误解:空字符串''不是带空格的字符串
var reversed = ''; 这里定义的是完全空的字符串,长度为0,没有任何字符(包括空格)。它只是作为反转操作的初始“空容器”,用来逐步拼接字符。
第二个误解:reversed = el + reversed的执行逻辑
这行代码不是把每个字符用空格隔开拼接,而是把当前遍历到的字符,放到现有结果字符串的最前面。咱们一步步模拟循环的执行过程,你就能看明白:
- 循环开始前:
reversed = ''(空容器) - 第一次循环(取字符
'b'):reversed = 'b' + ''→ 结果是'b' - 第二次循环(取字符
'a'):reversed = 'a' + 'b'→ 结果是'ab' - 第三次循环(取字符
'c'):reversed = 'c' + 'ab'→ 结果是'cab' - 第四次循环(取字符
'a'):reversed = 'a' + 'cab'→ 结果是'acab'
你看,每次都是把新字符往现有字符串的头部加,而不是尾部,这样遍历完整个原字符串后,自然就得到了反转后的结果。整个过程没有任何空格参与,所以最终输出就是acab啦。
内容的提问来源于stack exchange,提问作者sumon
相关产品推荐
相关产品推荐

