JS代码的预解析和作用域

一、js代码的预解析:

         js是一个解释型的语言,在代码执行之前,先对代码进行通读和解释,然后再执行代码,这就是js的代码的预解析。就像我们平时写代码的时候,很难理解为什么我们var a,打印a不报错而是undefined,又或者其他一些比如函数为什么可以随意放置啊,为什么变量会覆盖啊等等基础的问题,其实这些都是js的预解析在作怪。

       js预解析:分两步执行 。

一,找关键字var和函数,把关键字和函数先提取出来进行解析。
二,运行代码,代码解析以后代码从上至下执行。

下面我们来解析一段代码:     

一段代码中,如果变量跟函数同名,函数是一等公民

例:

注:预解析JS会对本代码块(script)中的所有声明的变量和函数进行处理,但需要注意的是此时处理函数的只是声明式函数,而且变量也只是进行了声明但未进行初始化以及赋值。

 

二、作用域:

      作用域是一个变量可以生效的范围,变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域。作用域分为全局作用域和局部作用域。

1、全局作用域:

       a、全局作用域中定义的变量可以在任何地方使用,

       b、页面打开的时候,浏览器会自动给我们生成一个全局作用域 window

       c、在函数内部不使用var定义的变量是全局作用域

       d、如果一个变量的作用域是全局作用域,这个变量我们叫全局变量

例:

2、局部作用域:
                a、在局部作用域中var定义的变量只能作用在这个局部作用内部使用
                b、在js中只有函数能生成一个局部作用域,别的都不行
                c、每一个函数,都是一个局部作用域
                d、如果一个变量的作用域是局部作用域,这个变量我们叫做局部变量

练习:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值