预解析
预解析
预解析:javaScript代码由浏览器中的javaScript解析器来执行的。javaScript解析器在运行javaScript代码的时候分为两步:预解析和代码执行
1.我们jS引擎运行JS 分为两步: 预解析 代码执行
(1):预解析 JS引擎会把JS里面所有的var 还有 function 提升到当前作用域的最前面
(2):代码执行 按照代码书写的顺序从上往下执行
例子1:
console.log(num); // 为什么是undefined
var num = 10;
// JS引擎预解析相当于以下代码
var num; // 先把变量提升到当前作用域的最前面,但不提升赋值操作,其他按照代码的书写顺序执行
console.log(num);
num = 10;
2.预解析 分为 变量预解析(变量提升) 和 函数预解析(函数提升)
(1):变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
(2):函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
例子2:
var num = 10;
fun();
function fun() {
console.log(num);
var num = 20;
}
// // 预解析相当于以下代码
var num;
function fun() {
var num
console.log(num);
num = 20;
}
num = 10;
fun();
例子3:
var num = 10;
function fn() {
console.log(num);
var num = 20;
console.log(num);
}
fn();
// 相当于以下代码
var num;
function fn() {
var num
console.log(num);
num = 20;
console.log(num);
}
num = 10;
fn();
例子4:
fun();
var fun = function() {
console.log(22);
}
//预解析相当于以下代码
var fun;
fun(); // 调用必须写在函数表达式的下面
fun = function() {
console.log(22);
}
注意:函数表达式 调用必须写在函数表达式的下面
文章目录
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
就是先准备好,然后再执行是吧
先把两个特殊的扔到最前面,然后依次执行。