JS预解析(预解释)
程序员文章站
2022-03-29 18:42:06
一.定义js是一个解释型的语言,在代码执行之前,先对代码进行通读和解释,然后再执行代码,也就是说会经历解释代码和执行代码两个阶段。在解释代码的过程中,解释了两个内容:声明式函数(不会解析赋值式函数)告诉浏览器,这个名字已经被定义过了,并且是一个函数。var 关键字告诉浏览器,这个变量名已经被定义过了,但是还没有赋值。二.注意点当进行预解析的时候,如果变量名和函数名重名,以函数名为准。三.预解析的无节操不管if条件是不是成立,if里面的代码都会进行预解析。预解析函数的时候...
一.定义
js是一个解释型的语言,在代码执行之前,先对代码进行通读和解释,然后再执行代码,也就是说会经历解释代码和执行代码两个阶段。在解释代码的过程中,解释了两个内容:
声明式函数(不会解析赋值式函数)
告诉浏览器,这个名字已经被定义过了,并且是一个函数。
var 关键字
告诉浏览器,这个变量名已经被定义过了,但是还没有赋值。
二.注意点
当进行预解析的时候,如果变量名和函数名重名,以函数名为准。
三.预解析的无节操
- 不管if条件是不是成立,if里面的代码都会进行预解析。
- 预解析函数的时候,如果函数里面有return,return后面的代码虽然不会执行,但是会进行预解析。
四.举例
1.
fn();
console.log(num);
function fn(){
console.log('我是fn函数')
}
var num = 100;
相当于执行:
function fn(){
console.log('我是fn函数')
}
var num = 100;
fn();
console.log(num);//undefined
num = 100;
2.
console.log( func );//函数func
var func = 123;
console.log( func );//123
function func() {
console.log( 'Hello js' );
}
相当于执行:
var func;
function func() {
console.log('Hello');
}
console.log( func );
func = 123;
console.log( func );
3.
console.log( func );
function func() {
console.log( 'Hello js' );
}
console.log( func );
var func = 123;
console.log( func );
相当于执行:
function func() {
console.log( 'Hello js' );
}
var func
console.log( func );
console.log( func );
func = 123;
console.log( func );
4.
alert(a);
var a = 0;
alert(a);
相当于执行
var a
alert(a);
a = 0;
alert(a)
5.
myFun(10, 20);//myFun is not a function
var myFun = function(a, b) {
return a + b;
}
相当于执行
var myFun;
myFun(10, 20);//报错
6.
alert(a);
var a = 1;
alert(a);
function a() {
alert(2);
}
alert(a);
var a = 3;
alert(a);
function a() {
alert(4);
}
alert(a);
相当于执行
var a;
function a() {
alert(2);
}
var a
function a() {
alert(4);
}
alert(a);//那个alert(4)的函数
a = 1;
alert(a); //1
alert(a);//1
a = 3;
alert(a);//3
alert(a);//3
本文地址:https://blog.csdn.net/weixin_46367787/article/details/107253673