首页 > 代码库 > JavaScript的最大函数参数长度和最大栈深度检测
JavaScript的最大函数参数长度和最大栈深度检测
也许一般代码不会触及最大参数长度和最大栈深度,但某些特殊场合,检测这两个参数还是有必要的
例如:用递归计算斐波那契数列的第n个值,不了解最大栈深度,难免显得肤浅
又例如:将一串charCode转成String,不了解最大参数长度,采用字符串拼接的方式,效率提不上,特别是在串较长的情况下
function getMaximumSupportedArgumentsLength(){ var args={length:0}; function noop(){} function test(n){ args.length=n; try{noop.apply(null,args);}catch(e){return false;} return true; } function getNum(min,max){ var start=min, end=max, mid=Math.ceil((start+end)/2), count=0; while(start<end){ if(test(mid)){ start=mid; mid=Math.floor((start+end)/2); }else{ end=mid-1; mid=Math.floor((start+end)/2); } count++; if(count>32){return max;} } return mid; } return getNum(0x7f,0x7fffffff); } function getMaximumCallStackSize(){ var size=0; function test(){ size++; test(); } try{ test(); }catch(e){ return size; } } //Maximum Supported Arguments Length //CH34 124782 //FF29 500000 //SF7 65536 //Maximum Call Stack Size //CH34 20926 in <script>, 20804 in console //FF29 21###(varies) in <script>, 49993 in console //SF7 43517 in <script>, 43509 in console
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。