学习js的第七天

函数预解析:

提示:在代码执行以前,对代码进行通读并解释

           js是弱类型解释型的脚本语言

预解析只解析两个内容:

  • var 声明的变量
  • 声明式的函数

注意事项:

打开浏览器 只解析全局代码 
不会对函数内的代码 进行预解析  
函数内的代码 会在调用函数的时候 进行预解析 

var 声明的变量:

提示:

提前进行声明 但是不赋值  相当于 这是准备一个空箱子 但是什么都不放 

声明式的函数:

提示:

对函数名进行声明,并且赋值为一个函数 相当于准备了一个空箱子 并且把函数放进去 

赋值式的函数按照 var 的规则进行解析 也是只准备空箱子 但是什么都不放 

var 的预解析:

var num = 100;
console.log(num);

打开浏览器
	var num = 100;
	console.log(num);
预解析:
	1.var num = 100; 这一行需要预解析 声明一个变量起名 叫num 但是不赋值
	2.console.log(num); 这一行不预解析  

代码执行:
	1.var num = 100; 将100放到 名字叫num的箱子里 
	2.console.log(num);将100 输出到控制台 
	
	

console.log(num);  // num is not defined
var num = 100;
console.log(num); // 100 

打开浏览器:
	1.console.log(num); 
	2.var num = 100;
	3.console.log(num); 
	
预解析:
	1.不预解析
	2.预解析 声明一个变量叫num 但是不赋值 
	3.不需要预解析 

执行:
	1. console.log(num); 打印num变量中的值 
	// num 在预解析阶段声明了但是没有被赋值 所以会打印undefined 
	2. 将100 放到容器中 
	3. console.log(num); 100 

声明式的函数:

//  fn();
        //  function fn(){
        //     console.log("我是函数");
        //  }
        //  fn();

         // 打开浏览器 
         // 1.fn()
         // 2. function fn(){ console.log("我是函数"); }
         // 3. fn();

         // 预解析 
         // 1. 不需要
         // 2. 需要 声明一个fn的变量 并且赋值为一个函数 
         // 3. 不需要

        // 执行阶段
        // 1. 正常调用 
        // 预解析阶段 已经完成了声明 并且里边是个函数 
        // 2. fn(); 跟上面 一样 正常调用  


        // 等价于 
        // function fn(){ console.log("我是函数"); }
        // fn();
        // fn();

赋值式函数预解析:

//赋值式的函数 

        // fn2();
        // var fn2 = function(){
        //     console.log("我是赋值式的函数");
        // }
        // fn2();

        // 打开浏览器
        // 1. fn2();
        // 2. var fn2 = function(){ console.log("我是赋值式的函数"); }
        // 3. fn2();


        // 预解析 
        // 1. 不需要
        // 2. 需要 声明一个fn2的变量 但是不赋值 
        // 3. 不需要


        // 执行 

        // 1. fn2(); 
        // 预解析阶段 fn2仅仅是 声明了一个变量 但是没有赋值
        // 此时fn2是一个undefined 我们fn2() 加了一个括号
        // 当成函数来调用   结果是 fn2 is not a function 
        // 2. 将一个函数赋值给fn2 fn2此时变成了一个函数
        // 3. fn2(); fn2里边是一个函数 
        /// fn2()当做一个函数来调用
        // 正常调用  

函数内预解析:

function fn3(){
            var num = 100;
            console.log(num);
            
        }
        fn3();

        // 预解析 
        // 1. 需要 声明一个fn3的变量 并且赋值为一个函数
        // 2. 不需要


        // 执行阶段 
        // fn3(); 
        // 预解析阶段 fn3已经声明了 并且里边是一个函数
        // 当做函数正常调用 

            // 开始对函数内的代码进行预解析
            // 1.声明变量 但是不赋值 


            // 函数内代码预解析完成 然后执行 
            // 1. 把100 赋值给num
            // 2. 打印num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值