javascript-作用域|预解析

  • javascript的两种作用域
    • 作用域
      • javascript作用域:变量在某个范围内起作用和效果;目的是为了提高程序的可靠性,更重要的是减少命名冲突
      • javascript作用域(es6)之前:全局作用域和局部作用域
        • 全局作用域:整个script标签或者一个单独的js文件
        • 局部作用域:在函数内部就是局部作用域,变量只在函数内部起作用;因此局部作用域也叫函数作用域
    • 变量的作用域
      • 全局变量:作用域是全局,整个script标签或者一个单独的js文件
      • 局部变量:作用域是局部,变量只在函数内部起作用
      • 特殊情况:在函数内部没有声明的变量(不带var的)也称为全局变量
    • 作用域链
      • 内部函数访问外部函数的变量,采用的是链式查找的方式来决定取哪个值,这种结构被称为作用域链;遵守的是就近原则;
  • 全局变量和局部变量的区别
    • 全局变量只有浏览器关闭时才会被销毁,比较占内存资源
    • 局部变量 当程序执行完毕就会销毁,更节省内存空间
  • 如何在作用域链中查找变量的值
    • 就近原则
  • 预解析
    • 导读:js代码是由浏览器中的javascript的解释器(又称js引擎)来执行的,js解释器在运行javascript代码的时候分为两步:预解析和代码执行
    • js解释器在运行javascript代码的时候分为两步走:先预解析 再代码执行
      • ​​​​​​​1、预解析:j s引擎会把j s里面的所有var 和function 关键字 提升到当前作用域的最前面
        • ​​​​​​​预解析分两种:
          • ​​​​​​​变量预解析:就是把所有的var声明提升到当前作用域的最前面,不提升赋值操作;变量预解析又叫做变量预提升
          • 函数预解析:就是把所有的function声明提升到当前作用域的最前面,不调用函数
      • 2、代码执行:按照代码书写顺序从上至下执行
    • 预解析案例
      • 
        
            
        
        

你可能感兴趣的:(javascript)