zoukankan      html  css  js  c++  java
  • js作用域

    ---恢复内容开始---

    /*作用域
       在js中,函数嵌套是非常普遍的,首先在函数内部寻找,寻找不到就会到函数外层寻找……直到window*/
          var c=5;
          function t1(){
              var d=6;
          
          function t2(){
              var e=7;
              alert(c+d+e);
          }
          t2();
      }
      t1();//18

     /*声明变量var的作用  var实在函数运行的上下文中,声明一个变量,如果不加var则仅仅理解为一个赋值操作,不要狭隘的理解为一个全局变量*/
         alert(window.d); //undefined
         alert(window.e);//undefined
         function t(){
             d=5;
             var e=6;
         }
         t();//d没有加var仅仅是一个赋值操作,寻找t域内的函数,没找到,继续寻找……window,window.d=5
         alert(window.d);//5
         alert(window.e);//undefined

    function t1(){
           var d;
           function t2(){
               d=5;
               e=6;
           }
           t2();
       }
       t1();
       console.log(d);//d is not defined错误

       console.log(window.d);//undefined
       console.log(e);//6

    var str1="global";
       function t1(){
           console.log(str1);
           console.log(str2);
            str2="local";
       }
       t1();
    第一行执行,在t1内寻找str1,没有,又在window上寻找str1,有,打印str1
    第二行执行,在t1内寻找str2,  没有,又在window上寻找str2,没有,因此是str2 is not defined
    第四行执行,(实际出错,没有执行到这一行),才把全局的str2赋上值

    var str1="global";
       function t1(){
           console.log(str1);
           console.log(str2);
           var str2="local";
       }
       t1();

    第一行执行,在t1内寻找str1,没有,又在window上寻找str1,有,打印str1
    第二行执行,在t1内寻找str2,  没有,又在window上寻找str2,没有,因此是undefined
    第四行执行,(实际出错,没有执行到这一行),才把全局的str2赋上值

    js代码自上而下执行,但是js代码在整体运行前分:词法分析期和运行期

    自上而下执行之前,先有一个词法分析过程,以上面为例:

    1:分析t1函数

    t1(){

    var str2; //分析出t1内有str2局部变量,注意此时函数未执行,因此str2的值是undefined

    }

    2:执行t1函数

           console.log(str1);//global
           console.log(str2);//undefined
           var str2="local";//local

  • 相关阅读:
    迅为龙芯2K1000开发板虚拟机ubuntu安装软件
    迅为恩智浦IMX6Q开发板系统固件TF卡烧写
    瑞芯微迅为iTOP-3399开发板资料更新啦!最新版本为1.3版本
    迅为-龙芯2K1000开发板虚拟机ubuntu系统开关机
    迅为IMX6ULL开发板Linux驱动初探-最简单的设备驱动-helloworld
    迅为-龙芯2K1000开发板虚拟机ubuntu基础操作
    开始Blog
    16 bit 的灰度图如何显示
    GPU 总结
    同步,异步,多线程和事件总结
  • 原文地址:https://www.cnblogs.com/autismtune/p/5177295.html
Copyright © 2011-2022 走看看