JavaScript基础知识总结——作用域和预解析

  • Post author:
  • Post category:java


1、JavaScript作用域

就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是减少命名冲突

2、js的作用域(es6)之前

全局作用域,局部作用域

3、全局作用域

整个script标签  或者是一个单独的js文件

例如  var  num=10;

4、局部作用域(函数作用域)

在函数内部就是局部作用域  这个代码的名字只在函数内部起效果和作用

例如  function  fn( ){

//局部作用域

}

5、变量的作用域

根据作用域的不同,我们变量分为全局变量和局部变量

(1)全局变量:在全局作用域下的变量,在全局下都可以使用

注:如果在函数内部  没有声明直接赋值的变量,也属于全局变量

(2)局部变量:在局部作用域下的变量,后者在函数内部的变量就是局部变量

注:函数的形参也可以看做是局部变量

(3)从执行效率来看全局变量和局部变量

全局变量只有浏览器关闭的时候才会销毁,比较占内存资源

局部变量当我们程序执行完毕就会销毁,比较节约内存资源

6、作用域链

内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值 这种结构我们称为作用域链(就近原则)

7、预解析

我们js引擎运行js  分为两步:预解析  代码执行

  • 预解析   js 引擎会把js 里面所有的var  还有function 提升到当前作用域的最前面
  • 代码执行  按照代码书写的顺序从上往下执行

预解析 分为  变量预解析(变量提升)和函数预解析(函数提升)

  • 变量提升 就是把所有的变量声明提升到当前的作用域最前面  不提升赋值操作
  • 函数提升  就是把所有的函数声明提升到当前作用域的最前面  不调用函数



版权声明:本文为qq_59012240原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。