JS栈内存,堆内存,消息队列

**

栈内存,堆内存,消息队列

**
栈内存:
1、基本类型
2、按值访问
3、存储的值大小固定
4、系统会自动分配内存空间
5、空间小,运行效率高
6、先进后出

堆内存:
1、引用类型
2、按照引用访问
3、存储大小不固定
4、内存分配:由代码进行分配
5、空间大,运行效率较低
6、无序存储(根据引用直接获取)
在这里插入图片描述

函数也是存在堆内存中
setTimeout的function会放到消息队列中(不论有没有带时间参数),消息队列中的任务会等其他执行完后再执行

DEMO1:

		for(int i=0;i<5;i++){
			setTimeout(
			()=>{
				console.log(i)
				},1000
			)
		}

会先运行完循环,再运行消息队列中的console.log,所以这段代码的执行结果为:1秒后打印5次5

DEMO2:

	for(int i=0;i<3;i++){
			setTimeout(
			()=>{
				console.log(i)
				},1000*i
			)
		}

1000*i中的i不在function里,所以这个i是循环执行栈里的
所以执行结果是:输出3次3,时间分别是0s,1s,2s

猜你喜欢

转载自blog.csdn.net/qq_43540219/article/details/107519155
今日推荐