javascript - Javascript 最大调用堆栈大小超出了从删除函数括号中修复的问题
问题描述
当我尝试运行以下代码时:
var reverseWords = function(s) {
s.reverse();
const findEndWord = (index) => {
s[index] === ' ' || index === s.length ? index : findEndWord(index + 1);
}
const reverseWord = (left, right) => {
if(left >= right) {
return;
}
const temp = s[left];
s[left] = s[right];
s[right] = temp;
reverseWord(left + 1, right -1);
}
// code to actually implement
var index = 0;
while(index < s.length) {
const end = findEndWord(index);
reverseWord(index, end -1);
index = end + 1;
}
return s;
};
我将“超出最大调用堆栈大小”视为错误。
但是,当我运行以下代码时
var reverseWords = function(s) {
s.reverse();
const findEndWord = (index) =>
s[index] === ' ' || index === s.length ? index : findEndWord(index + 1);
const reverseWord = (left, right) => {
if(left >= right) {
return;
}
const temp = s[left];
s[left] = s[right];
s[right] = temp;
reverseWord(left + 1, right -1);
}
// code to actually implement
var index = 0;
while(index < s.length) {
const end = findEndWord(index);
reverseWord(index, end -1);
index = end + 1;
}
return s;
};
代码运行完美。两段代码之间的唯一区别是第一个函数表达式“findEndWord”使用了大括号,但在第二段代码中,我从 findEndWord 函数表达式中删除了大括号。这不只是语法糖吗?有人可以解释为什么仅使用花括号就超过了最大调用堆栈大小吗?谢谢
解决方案
在第一个代码块中:
const findEndWord = (index) => {
s[index] === ' ' || index === s.length ? index : findEndWord(index + 1);
}
您的函数不返回任何值。您可以通过添加来解决此问题return
:
const findEndWord = (index) => {
return s[index] === ' ' || index === s.length ? index : findEndWord(index + 1);
}
在第二个代码块上:
const findEndWord = (index) =>
s[index] === ' ' || index === s.length ? index : findEndWord(index + 1);
箭头符号=>
已经完成了这项工作。所以f = (x) => x*2
等于f = (x) => { return x*2; }
推荐阅读
- html - 在 Apple 的 WebKit webView 中加载自定义字体的问题
- sql - SQL - 获取每个 PlayerID 的最小日期
- typescript - 扩展一个可由用户定义的接口
- ansible - 合并到嵌套的字典数组中
- python - 如何在 python Dataframe 中将“2011-04-29 00:00:00”转换为“29-Apr-2011”
- python - 根据两个不同列的日期获取交叉连接表的唯一记录时,如何提高逻辑速度/内存?
- java - 运行 IDE Android Studio 需要 Java 11 或更高版本
- javascript - ReactJs 点击后状态不更新
- javascript - Javascript reportValidity 未按预期工作
- php - 始终必须在网站 URL 后键入“?fdsa=5”才能正确加载