预解析(重点)
- 预解析 其实就是聊聊
js
代码的编译和执行 js
是一个解释型语言,就是在代码执行之前,先对代码进行通读和解释,然后在执行代码- 也就是说,我们的
js
代码在运行的时候,会经历两个环节 解释代码 和 执行代码
解释代码
-
因为是在所有代码执行之前进行解释,所以叫做 预解析(预解释)
-
需要解释的内容有两个
-
声明式函数
- 在内存中先声明有一个变量名是函数名,并且这个名字代表的内容是一个函数
-
var
fn();
function fn(){
console.log(1);
}
fn();
var fn=10;
fn();
function fn(){
console.log(2);
}
fun();
//2
//2
//报错
预解析:
1.fn()不需要
2.function fn()需要声明
3,fun()不需要
4,var fn()需要
5,fn()不需要
6,function fn()需要声明
7,fn()不需要
执行:
1.调用第一个fn函数
2.fn()调用第一个函数,此时第一个函数在预解析的时候已经被覆盖了,结果是2
3.fn变成一个变量,不是函数了
4,fn()出错
5,后面不执行
关键字
- 在内存中先声明有一个变量名
-
-
看下面一段代码
fn() console.log(num) function fn() { console.log('我是 fn 函数') } var num = 100
-
经过预解析之后可以变形为
function fn() { console.log('我是 fn 函数') } var num fn() console.log(num) num = 100
-
赋值式函数会按照
var
关键字的规则进行预解析## 预解析(重点) -
预解析 其实就是聊聊
js
代码的编译和执行 -
js
是一个解释型语言,就是在代码执行之前,先对代码进行通读和解释,然后在执行代码 -
也就是说,我们的
js
代码在运行的时候,会经历两个环节 解释代码 和 执行代码
解释代码
-
因为是在所有代码执行之前进行解释,所以叫做 预解析(预解释)
-
需要解释的内容有两个
-
声明式函数
- 在内存中先声明有一个变量名是函数名,并且这个名字代表的内容是一个函数
-
var
fn();
function fn(){
console.log(1);
}
fn();
var fn=10;
fn();
function fn(){
console.log(2);
}
fun();
//2
//2
//报错
预解析:
1.fn()不需要
2.function fn()需要声明
3,fun()不需要
4,var fn()需要
5,fn()不需要
6,function fn()需要声明
7,fn()不需要
执行:
1.调用第一个fn函数
2.fn()调用第一个函数,此时第一个函数在预解析的时候已经被覆盖了,结果是2
3.fn变成一个变量,不是函数了
4,fn()出错
5,后面不执行
关键字
- 在内存中先声明有一个变量名
-
-
看下面一段代码
fn() console.log(num) function fn() { console.log('我是 fn 函数') } var num = 100
-
经过预解析之后可以变形为
function fn() { console.log('我是 fn 函数') } var num fn() console.log(num) num = 100
-
赋值式函数会按照
var
关键字的规则进行预解析