JavaScript入门第十八章(js作用域及变量预解析 ),web项目开发【附源码】_前端全栈工程师

 * 2.js中只有两种:全局作用域  局部作用域             *   * 全局作用域:变量在任何地方起作用            * 全局变量:在函数外面声明     * 局部作用域:变量只能在函数内部起作用(又叫块级作用域)                * 局部变量:在函数内部声明 
 <script>      //1.全局变量      let a = 10;      function fn (  ) {          console.log ( a );      }      fn();      //2.局部变量      function fn1 (  ) {          let num = 10;          console.log ( num );      }      fn1();      console.log ( num );  </script> 

2.作用域链


  • 1.作用域链是怎么来的

    • 默认情况下,我们的js代码处于全局作用域,当我们声明一个函数时,此时函数体会开辟一个局部作用域, 如果我们在这个函数体中又声明一个函数,那么又会开辟一个新的局部作用域,以此类推,就会形成一个作用域链
  • 2.变量在作用域链上的访问规则

    • 就近原则:访问变量时,会优先访问的是在自己作用域链上声明的变量,如果自己作用域链上没有声明这个变量,那么就往上一级去找有没有声明这个变量,如果有就访问,如果没有就继续往上找有没有声明,直到找到0级作用域链上,如果有,就访问,如果没有就报错

?代码展示:

        let num = 10; // 0级链   全局作用域链         // 0级作用域         function f1 (  ) { // 函数变量f1本身还是处于0级链(变量f1本身处在全局作用域中,是一个全局变量。函数体中才是局部变量,也就是局部作用域链)             let num = 20; // 1级链             console.log ( num ); // 20             function f2 (  ) { // 1级链                 // 2级链                 console.log ( num ); // 20,当前作用域链未声明,就会找上级作用域链的num变量                 num += 100; // 当前作用域链未找到,会从上级寻找 num = 20 + 100                 console.log ( "二级链" + num ); // 2级链  120             }             f2();             console.log ( "一级链" + num ); // 120   为什么不是20:因为二级链上并没有声明变量,而是直接获取父级变量修改         };         // 0级作用域         f1();         // 0级作用域         console.log ( "0级链" + num );// 10 

3.js预解析


  • 1.为什么要有预解析机制?

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。

JavaScript入门第十八章(js作用域及变量预解析 ),web项目开发【附源码】_前端全栈工程师

本站由小牛团队全力维护,小牛十年了,大家已经步入中年 。本站源码全部经过团队成员测试并调试,价格可能比其它网站略贵几元钱,不解释!
小牛资源 » JavaScript入门第十八章(js作用域及变量预解析 ),web项目开发【附源码】_前端全栈工程师

发表评论

全站资源亲测可用,价格略高几元,不解释

立即查看 了解详情