JavaScript运行机制(小试牛刀)

181 阅读1分钟

一:什么是单线程?

一个时间之内js只能做一件事

二:什么是任务队列?

1. 分同步任务和异步任务
2. 执行时间:
   优先执行同步任务然后异步任务 顺序( 1.执行同步任务 2.遇到异步任务先挂起 3.同步任务执行完之后再执行异步任务)

下面看几个小例子:

/// 异步任务(setTimeout和setInterval DOM事件 ES6中的Promise)
console.log(1);
//异步任务
setTimeout(function(){
	console.log(2);
},0);
console.log(3);


/// 死循环 不会输出B
 console.log('A');
 setTimeout(() => {
 console.log('B');
 }, 0);
 while (true) {}

// * 使用var 定义变量的时候,作用域是在foo函数下,在for循环外部,在整个循环中是全局的,每一次的循环实际上是为index赋值,循环一次赋值一次,4次循环完成,index最后的结果赋值就为4;
//  * 就是被最终赋值的index,就是4;
// * let的作用局的块级作用局,index的作用域在for循环内部,即每次循环的index的作用域就是本次循环,下一次循环重新定义变量index;所以index每次循环的输出都不同
for (var index = 0; index < 4; index++) {
	setTimeout(() => {
		console.log('var声明',index);
	}, 1000);
}

for (let index = 0; index < 4; index++) {
	setTimeout(() => {
		console.log("let声明",index);
	}, 1000);
}

参考文章:彻底弄懂 JavaScript 执行机制