一般代码也许不会涉及最大參数长度和最大栈深度,但某些特殊场合,检測这两个參数还是有必要的。比如:用递归计算斐波那契数列的第n个值,不了解最大栈深度,难免显得肤浅。又比如:将一串charCode转成String,不了解最大參数长度。採用字符串拼接的方式,效率提不上。特别是在串较长的情况下。

下面两个方法分别实现了JavaScript执行环境的 最大函数參数长度检測 和 最大栈深度检測。

不同浏览器的測试结果不同,同一款浏览器在不同机器測试结果不同。甚至某些浏览器连续測试时先后结果会有不同。

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(upTo){if(test(upTo)){return upTo;}var min=1,max=upTo,mid=Math.floor((min+max)*0.5);while(min<max){if(test(mid)){min=mid;}else{max=mid;}mid=Math.floor((min+max)*0.5);if(mid==min){break;}}return min;}return getNum(0xFFFFFFFF);
}
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

转载于:https://www.cnblogs.com/bhlsheji/p/5377710.html

JavaScript的最大函数參数长度和最大栈深度检測相关推荐

  1. c语言指针和函数对数组A升序排序,函数指针作为函数參数,实现冒泡排序的升序排序和降序排序...

    #include #define N 10//定义数组元素个数 int Ascending(int a,int b);//升序排列的函数声明 int Descending(int a,int b);/ ...

  2. 【通过操作指针,与指针做函数參数#39;实现字串在主串中出现的次数,然后将出现的部分依照要求进行替换 】...

    #include<stdio.h> #include<stdlib.h> int strTime(const char *str1, const char *str2, int ...

  3. JMeter 压力測试使用函数和 CSV 文件參数化 json 数据

    在 http Load Testing 中.json 数据的提交是个让人头疼的问题.本文具体介绍怎样进行 JMeter 的 json 測试提交,以及怎样将其參数化.         Step 1 ht ...

  4. Python学习笔记7:函数对象及函数对象作參数

    一.lambda函数 比如: fun1 = lambda x,y: x + y print fun1(3,4) 输出:7 lambda生成一个函数对象.该函数參数为x,y,返回值为x+y.函数对象赋给 ...

  5. 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为參数,泛型函数...

     1.指针数组 数组里面的每一个元素都是指针. 指针数组的案比例如以下: 易犯错误: 2.数组指针 归根结底还是指针,仅仅是取*的时候可以取出一整个数组出来. 数组指针:(一个指针指向了数组.一般 ...

  6. 再次学习javascript中的參数传递

    javascript中的全部函数的參数传递都是依照值传递的,做了以下測试: function addTen(num){num +=10;return num; }var count = 20; var ...

  7. C语言结构体及函数传递数组參数演示样例

    C语言结构体及函数传递数组參数演示样例 注:makeSphere()函数返回Sphere结构体,main函数中.调用makeSphere()函数,传递的第一个參数为数组,传递的数组作为指针. post ...

  8. C语言中函数和指针的參数传递

    C语言中函数和指针的參数传递 近期写二叉树的数据结构实验.想用一个没有返回值的函数来创建一个树,发现这个树就是建立不起来,那么我就用这个样例讨论一下c语言中指针作为形參的函数中传递中隐藏的东西. 大家 ...

  9. 【JavaScript】自定义函数

    函数 函数是一个可重用的代码块,用来完成某个特定功能.每当需要反复执行一段代码时,可以利用函数来避免重复书写相同代码. 函数包含着的代码只能在函数被调用时才会执行,就可以避免页面载入时执行该脚本 在J ...

  10. 具体解释可变參数列表

    可变參数   至少有一个參数 比如:void add(int a,- ){} 例题  模拟printf()函数 #include <stdio.h> #include <stdarg ...

最新文章

  1. 各种图论模型及其解答(转)
  2. 防盗链测试01 - Jwplayer+Tengine2.3.1 mp4模块打造流媒体测试服务器
  3. centos service 无法用
  4. linux 键盘 数值,键盘数值对照表
  5. geteditor p 取消自动_2020百度网盘超级会员怎么取消自动续费?
  6. sqlmap的简单用法
  7. 第三章·MySQL版本区别及管理
  8. redis13---事务处理。
  9. laravel下载文件
  10. 奥尼捷多功能证件包护照包证件夹男士卡包女士必备 A101 黑色【图片 价格 品牌 报价】-京东商城...
  11. 使用Riverbed SteelCentral NetProfiler,大海捞针不再难
  12. 2016互联网金融安全峰会报名
  13. Android 实现点击输入框以外的区域隐藏软键盘
  14. 管理后台 - 轮播图片管理功能
  15. 现在大火的低代码是怎么回事?从实现原理谈谈低代码
  16. 网站权重8 的网站优化方案
  17. Ext.net Grid拖动行排序,【最上】【最下】【上移】【下移】按钮排序
  18. Python 卡尔曼滤波器实现
  19. 国标GB28181流媒体服务器SIP视频流获取过程
  20. 美国专线物流详解:美国专线物流有哪些平台

热门文章

  1. 颠覆大数据分析之结论
  2. [转载] 七龙珠第一部——第061话 塔上的卡林神
  3. 我的java编程之路小小总结感想
  4. Maven+SpringMVC+Dubbo 简单的入门demo配置(另一篇)
  5. python关闭函数解释器_深入 Python 解释器源码,我终于搞明白了字符串驻留的原理!...
  6. python 可视化界面 打开excel_python如何将excel数据处理可视化
  7. Linux中创建 静态库和动态库(共享库) 本人亲测可行
  8. MAC VSCode Go代码第一次运行配置
  9. 还在被网络上各种关于单片机行业的收入搞的眼花缭乱而烦恼吗
  10. 单片机与嵌入式的关系,单片机是嵌入式的子类