• 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

  • 相关阅读:
    MongoDB 学习笔记之 MongoDB导入导出
    快学Scala 第十四课 (读取行,读取字符, 控制台读取)
    MongoDB 学习笔记之 权限管理基础
    MongoDB 学习笔记之 索引
    MongoDB 学习笔记之 游标
    MongoDB 学习笔记之 查询表达式
    MongoDB 学习笔记之 基本CRUD
    MongoDB 学习笔记之 入门安装和配置
    Eclipse设置JVM的内存参数
    cron表达式详解
  • 原文地址:https://www.cnblogs.com/autismtune/p/5177295.html
Copyright © 2020-2023  润新知