JavaScript之预解析
程序员文章站
2022-03-18 17:05:14
...
预解析
在当前作用域下, js 运行之前,会把带有 var 和 function 关键字的事先声明,并在内存中安排好。然后再从上到下执行 js 语句。预解析只会发生在通过 var 定义的变量和 function 上。
声明和定义
var num=10;
这行代码可分为两个步骤:声明和定义
声明:var num;告诉浏览器在当前作用域下有一个变量 num 存在了,但并没有定义,其值为 undefined
定义:num=10; 给变量赋值
var声明的变量与function声明的函数在预解析时的区别
var 声明的变量预解析时只是进行提前声明
function 声明的函数在预解析不仅提前声明,还会同时定义
预解析只限于当前作用域
程序在最开始只对全局变量和函数进行预解析,只有函数执行时才会对其中的局部变量和函数进行预解析
console.log(num); // 返回undefined(只进行了声明,未被定义)
var num=10;
console.log(num); // 返回10(被定义了)
fun(); // 弹框出现(声明同时也定义了)
function fun () {alert()}
function fun1() {
console.log(num); // 返回undefined(当前作用域中存在num,只是未被定义,所以不会返回全局num的值)
var num=100;
}