欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript代码的运行机制

程序员文章站 2024-03-24 23:10:10
...

1、变量提升

js 代码执行之前,会对所有声明的变量进行提前

var 声明的变量 => 提前声明,不赋值

console.log(num); // undefined 
// 代码执行到这里时,num 只是经过了变量提升,但是没有完成赋值,所以是 undefined;
​
var num = 100; // 代码执行过这一行后完成了赋值,所以 num 是100
console.log(num);  // 100

function 声明的变量 => 提前声明,并且赋值

console.log(fe); // 函数体本身
//因为 fe 这个变量在函数执行时就已经赋值完成了,所以无论在函数声明前还是后使用都是函数本身
​
fe(); // 因为 fe 在变量提升阶段就已经完成了赋值,所以 fe 是一个函数,所以可以成功执行
​
function fe() {
    console.log('We are Front-end Engineer');
}

2、判断变量类型

1)、如果遇到基本数据类型,就在作用域中存储该基本数据类型;

2)、如果遇到引用数据类型,则浏览器会再次分配一个堆内存,然后把引用数据类型的内容存储到堆内存中,接下来再把这个堆内存的地址赋值给变量(此时这个地址是存储在作用域内存中的);

3)、如果遇到函数执行时,会经历以下几步:

  • 浏览器开辟一个私有作用域;

  • 形参赋值,把执行时的实参赋值给函数形参变量;

  • 私有作用域中变量提升

  • 函数代码从上到下执行

ps:

js 运行的环境是浏览器开辟的栈内存

栈内存js的作用域,栈内存 另外一个功能是保存基本数据类型