Javascript 反转给出相同字符串的字符串

Javascript 反转给出相同字符串的字符串,javascript,Javascript,以前有人问过这个问题,但我想知道我的解决方案有什么问题,我可以用谷歌搜索一个解决方案,但更感兴趣的是了解我做错了什么。我希望在不使用主要内置函数的情况下反转字符串。下面是我的代码,但它返回相同的字符串 s="hello"; var opp=s; for (var i=0; i< s.length; i++) { opp[i] = s[s.length-i]; } alert (opp); 您的代码返回相同的字符串,因为JavaScript中的字符串是冻结的。任何修改

以前有人问过这个问题,但我想知道我的解决方案有什么问题,我可以用谷歌搜索一个解决方案,但更感兴趣的是了解我做错了什么。我希望在不使用主要内置函数的情况下反转字符串。下面是我的代码,但它返回相同的字符串

s="hello";
var opp=s;
for (var i=0; i< s.length; i++)
{
   opp[i] = s[s.length-i];        
}
alert (opp);

您的代码返回相同的字符串,因为JavaScript中的字符串是冻结的。任何修改字符串的尝试都将被忽略。相反,您需要根据您的规则构建新字符串

您可以通过将opp分配给空字符串:var opp=并将字符按相反顺序推送到它来更新代码:opp+=s[s.length-i]

我还在你的代码中发现了一个bug。第一次迭代将返回什么?它将尝试访问缺少位置的字符:s.length-i=s.length-0=s.length。因为在JavaScript中,字符串和数组的索引为零,所以字符串中的最大字符索引为s.length-1。您正在尝试访问s.length。

字符串是:您无法分配给索引。opp[i]是只读的

另一种方法是使用阵列:

s=你好; var opp=[]; var len=s.长度-1; 对于var i=0;i

'some word'
  .split('')
  .reduce(({str, tail}, char, i, word) => {
    return {tail: tail - 1, str: str + word[word.length + tail]}
  }, {str: '', tail: -1})
  .str

这个问题在你的问题之前已经被问过了…字符串是不可变的:你不能分配给索引。str[n]是只读的。@AlexK:我不熟悉JavaScript。我可以用C/C++来做这件事,PHPAn苹果尝起来像苹果,但橘子尝起来不像。谢谢。我可能应该在做任何事情之前先把绳子分开。你能解释一下我为什么要这样做吗