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

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;
}
相关标签: 预解析