在javascript中使用递归查找字符串长度

在javascript中使用递归查找字符串长度,javascript,Javascript,我正在尝试使用递归获取字符串长度,但无法获取,请任何人提供帮助 多谢各位 也许是这样的 strLength = 0; for (var i = 0; i < string.length; i++){ strLength++; } 编辑#2: 运行代码后,我意识到了这个问题。您给我的函数在字符串的每一个长度上运行一次,这意味着调用堆栈将填满所有函数调用。此链接解释了更多内容: 我上面提供的函数可以很好地处理超过一百万个字符的字符串。Javascript确实受到浏览器的限制,因此超过

我正在尝试使用递归获取字符串长度,但无法获取,请任何人提供帮助

多谢各位


也许是这样的

strLength = 0;
for (var i = 0; i < string.length; i++){
    strLength++;
}
编辑#2:

运行代码后,我意识到了这个问题。您给我的函数在字符串的每一个长度上运行一次,这意味着调用堆栈将填满所有函数调用。此链接解释了更多内容:

我上面提供的函数可以很好地处理超过一百万个字符的字符串。Javascript确实受到浏览器的限制,因此超过一定长度的性能将受到浏览器对执行代码的限制的极大限制

简言之,您想要的方式永远不会对长度超过几十个字符的字符串起作用。我的方法虽然可能不是性能最好的,但可以处理长度超过一百万的字符串,没有问题


下面是一个JSBin:

递归的基本思想是在函数内部调用自己

函数strLen(str,cnt){
cnt=cnt | | 0;
如果(str.length){
返回strLen(str.substr(1),++cnt);
}否则{
返回cnt;
}
}
控制台日志(strLen(“asdf”);

console.log(strLen(“1234567890”)请在此处发布代码并解释问题所在。你的代码截图没有帮助。你的用例是什么?为什么要使用递归查找字符串长度?是否有原因不能只使用string.length属性?函数strlen(mystring){if(mystring==“”){return 0;}否则{return(1+strlen(mystring.substr(1));};任何使用递归不会抛出最大堆栈错误的东西,请参阅我的修订建议,了解另一种方法。还有,你说的最大堆栈是什么意思?如果有一个长的输入,使用递归会抛出一个错误。让我给你一段代码,它可能有助于函数strlen(mystring){if(mystring===“”){return 0;}else{return(1+strlen(mystring.substr(1));};尝试上面的长输入代码,它工作1000次,但失败10000次,导致错误strlen(buildString(1000));
function stringLength(string)
    parts = string.split("");
    stringLength = 0;
    for (x in parts){
        stringLength++;
}
console.log(stringLength("Hello"))