2020-12-18
程序员文章站
2022-03-18 17:09:26
...
JS预解析详解
js预解析又名为变量提升,在当前作用域中,JavaScript代码执行之前,浏览器首先会默认的把所有带var和function声明的变量进行提前的声明或者定义。
// 1问
// console.log(num);
// 2问
console.log(num); //undefined 坑1
var num = 10;
// 相当于执行了以下代码
// var num;
// console.log(num);
// var num = 10;
// 3问 (函数提升)
fn();
function fn() {
console.log(11);
}
// 4问
fun(); //报错 坑2
var fun = function() {
console.log(22);
}
// 函数表达式 调用 必须写在函数表达式的下面
// 相当于执行了以下代码
// var fun;
// fun();
// fun = function() {
// console.log(22);
// }
// 1.我们js引擎运行js分为两步: 预解析 代码执行
// (1)预解析 js引擎会把js 里面所有的var 还有function 提升到当前作用域的最前面
// (2)代码执行 按照代码书写的顺序从上往下执行
// 2.预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
// (1)变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
// (2)函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
总的来说预解析就是先输出,然后再声明
推荐阅读