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

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