You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何这段JavaScript字符串反转代码输出含'Undeclared'?

问题分析与修复

Let's walk through what's going wrong with your string reversal function and fix it up:

主要问题点

  • 未初始化rev变量:你在循环里直接使用rev但没有先给它赋值,JavaScript会把未初始化的变量视为undefined。第一次执行str[i] + rev时,就会变成str[0] + "undefined",这就是输出里出现undefined(你看到的Undeclared应该是输入笔误)的原因。
  • 循环条件越界:字符串的索引是从0到length-1的,你的循环条件是i <= len,当i等于len时,str[i]会是undefined,又会多拼接一次这个字符串,导致输出末尾再出现一次undefined。
  • 循环内重复声明变量:每次循环都用var rev声明变量,虽然var的变量提升不会直接报错,但这是不必要的写法,容易造成混淆。

修复后的代码

如果你想保持从前往后拼接的逻辑(把每个字符加到结果的前面),可以改成这样:

function Reverse(str) {
  var len = str.length;
  var rev = ""; // 先初始化空字符串
  for(var i = 0; i < len; i++) { // 循环条件改为i < len,避免越界
    rev = str[i] + rev;
  }
  alert(rev);
}
Reverse('Canyon');

或者更高效的方式是从字符串末尾往前遍历,直接拼接到结果后面:

function Reverse(str) {
  var len = str.length;
  var rev = "";
  for(var i = len - 1; i >= 0; i--) {
    rev += str[i];
  }
  alert(rev);
}
Reverse('Canyon');

运行这两个版本的代码,都会弹出正确的反转结果"nynoC"。

内容的提问来源于stack exchange,提问作者Shah Quadri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:29:36