优秀的编程知识分享平台

网站首页 > 技术文章 正文

JavaScript中 预解析 && 声明 && 小例子代码详细分解(一)

nanyue 2024-08-27 18:06:43 技术文章 3 ℃

预解析:程序在执行过程,会先将代码读取到内存中检查。会将所有的声明在此时进行标记,所谓的标记就是让js解释器知道有这个名字,后边在使用名字的时候,不会出现未定义的错误,这个标记过程就是提升。

声明:

1.名字的声明,标识符的声明(变量名声明)
 *名字的声明就是让我们的解释器知道有这个名字
 *名字没有任何数据与之对应
2.函数的声明
 *函数声明包含两部分:
 a.首先函数声明告诉解释器有这个名字存在,该阶段与名字声明一样
 b.告诉解释器,这个名字对应的函数体是什么
 *函数声明与函数表达式有区别,函数声明是单独写在一个结构中,不存在任何语句 逻辑判断等结构中

区分声明和表达式:

function f(){
 function func(){
 } //函数声明(函数后面不加分号)

 if(true){
 function func2(){} //函数表达式
 }

 var f=function func3(){}; //函数表达式
 this.sayHello=function(){}; //函数表达式

 var i=1;
 fucntion func4(){} //函数声明
 var j=3;

}

例子分析 1 :

var num=1;
function num(){
 alert(num);
}
num(); //报错:num is not a function
console.log(num);//1
  1. 预解析代码:提升名字

*首先提升名字num,

*再提升函数名,但是名字已经存在,因此告诉解释器,让名字与函数体对应上

*得出代码中已有一个num函数

2.开始执行代码,第一句话从赋值语句开始,

*给num赋值为1,覆盖了num函数

3.调用num,由于num中存储的是1,因此报错

4.如果是打印num,就会输出1.

最近发表
标签列表