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

为何JavaScript字符串重复函数调用后console.log返回NaN?

问题分析:为什么调用repeatS("ahfidhfd", 3)返回NaN?

嘿,我一眼就揪出问题所在了!先把你的代码贴出来方便咱们一步步拆解:

function repeatS(srr, num) { 
  if (num <= 0) { 
    return ""; 
  } 
  var result = ""; 
  for (var i = 0; i < num; i++) { 
    result = +srr; 
  } 
  return result; 
}

核心错误:误用一元加号运算符

你循环里写的result = +srr;是导致返回NaN的关键:

  • 这里的+是一元加号运算符,它的作用是尝试把右侧的变量转换成数字类型。
  • 你的输入字符串"ahfidhfd"是纯字母组成的,完全无法转换成有效数字,所以+srr会直接返回NaN(Not a Number)。
  • 循环执行3次,每次都把result赋值成这个NaN,最后返回的自然就是NaN了。

正确写法:字符串累加拼接

你想要的是把字符串重复指定次数,所以应该用加法赋值运算符+=,把每次的字符串追加到result末尾:

function repeatS(str, num) { 
  if (num <= 0) { 
    return ""; 
  } 
  var result = ""; 
  for (var i = 0; i < num; i++) { 
    result += str; // 改成 += 实现字符串累加
  } 
  return result; 
}

测试修正后的代码:

console.log(repeatS("ahfidhfd", 3)); // 输出:ahfidhfdahfidhfdahfidhfd

另外提个小细节:参数名str比srr更易读,能避免拼写混淆;如果用现代JS语法的话,用let/const代替var会更规范,不过这不影响核心功能~

内容的提问来源于stack exchange,提问作者Xinyi Li

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:21:37