js中的预解析与变量名提升问题

本文深入探讨JavaScript中的预解析和变量名提升概念。通过示例解释了预解析过程,包括标识符声明(变量声明)和函数声明的提升。在函数调用中,由于作用域的影响,变量的值会有不同的输出顺序。
摘要由CSDN通过智能技术生成

      在这里,我将细致的讲解与预解析声明和名字提升等相关概念,并用例子来详细分析

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

      上面所提到的申明包括两个部分:

     1、标识符的申明(就是变量名的申明)

          *在申明变量的时候,前面必须要有关键字var该变量才能提升

          *变量名的申明就是让解析器知道有这个名字的存在并默认将该变量赋值undefined

     2、函数的申明(包括两个部分)

         *首先,函数申明和变量申明一样告诉解析器这个名字的存在

         *然后,告诉解析器这个函数名的函数体是什么

         *函数与表达式有区别,函数申明是单独写在一个结构中,不存在任何语句,逻辑判断中等语句中

 下面用一个例子来分析,与解析和提升以及申明和执行过程

        var  num=123;

       function fun(){

              console.log(num);

               var num=456;

               console.log(num);

           }

           fun();

分析:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值