javascript

JavaScript栈大小-javascript stack s

2019-12-14  本文已影响0人  nico1988

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)
image.png

查看栈溢出大小的代码

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

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

查看i的值


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

参考

上一篇下一篇

猜你喜欢

热点阅读