为何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
相关产品推荐
相关产品推荐

