JavaScript栈大小-javascript stack size limit

JavaScript引擎采用调用栈(call stack)来管理执行上下文(执行环境), 然而调用栈是有大小限制的,当入栈的执行环境超过一定的数量以后,就会引发栈溢出,同时这个引发栈溢出的栈大小由于浏览器的厂商、版本各不相同。

JavaScript的栈结构

执行如下函数,JavaScript引擎会为我们创建如下函数执行栈

var a = 2
function add(b,c){
  return b+c
}
function addAll(b,c){
  var d = 10
  result = add(b,c)
  return a+result+d
}
addAll(3,6)
JavaScript栈大小-javascript stack size limit_第1张图片
image.png

查看栈溢出大小的代码

chrome浏览器 ctrl + shift + i ,打开控制台输入:

let i = 0;
function a(){
  i++;
  a();
}
a()

查看i的值


JavaScript栈大小-javascript stack size limit_第2张图片
image.png

不同浏览器、版本的栈的限制

Internet Explorer
IE6: 1130
IE7: 2553
IE8: 1475
IE9: 20678
IE10: 20677
Mozilla Firefox
3.6: 3000
4.0: 9015
5.0: 9015
6.0: 9015
7.0: 65533
8b3: 63485
17: 50762
18: 52596
19: 52458
42: 281810
Google Chrome
14: 26177
15: 26168
16: 26166
25: 25090
47: 20878
51: 41753
Safari
4: 52426
5: 65534
9: 63444
Opera
10.10: 9999
10.62: 32631
11: 32631
12: 32631

参考

  • https://stackoverflow.com/questions/7826992/browser-javascript-stack-size-limit
  • 浏览器工作原理与实践

你可能感兴趣的:(JavaScript栈大小-javascript stack size limit)