在这里,我将细致的讲解与预解析声明和名字提升等相关概念,并用例子来详细分析
预解析的过程: 程序在执行过程会先将代码读取到内存中检查,会将所有的申明在此时标记,所谓的标记就是让js解析器知道有这个名字,后面使用名字的时候,不会出现未定义的错误,这个标志过程就是提升
上面所提到的申明包括两个部分:
1、标识符的申明(就是变量名的申明)
*在申明变量的时候,前面必须要有关键字var该变量才能提升
*变量名的申明就是让解析器知道有这个名字的存在并默认将该变量赋值undefined
2、函数的申明(包括两个部分)
*首先,函数申明和变量申明一样告诉解析器这个名字的存在
*然后,告诉解析器这个函数名的函数体是什么
*函数与表达式有区别,函数申明是单独写在一个结构中,不存在任何语句,逻辑判断中等语句中
下面用一个例子来分析,与解析和提升以及申明和执行过程
var num=123;
function fun(){
console.log(num);
var num=456;
console.log(num);
}
fun();
分析: