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

  • 相关阅读:
    ubuntu 使用ifupdown 进行高级网络设置
    2015 9月27日 工作计划与执行
    2015 9月25日 工作计划与执行
    2015 9月24日 工作计划与执行
    2015 9月23日 工作计划与执行
    ubuntu 安装python3
    leetCode(12):Remove Duplicates from Sorted List 分类: leetCode 2015-06-18 15:48 136人阅读 评论(0) 收藏
    leetCode(11):Reverse linked list II 分类: leetCode 2015-06-18 15:16 154人阅读 评论(0) 收藏
    leetCode(10):Partition List 分类: leetCode 2015-06-18 09:08 105人阅读 评论(0) 收藏
    leetCode(9):Remove Nth Node From End of List 分类: leetCode 2015-06-18 08:15 109人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/autismtune/p/5177295.html
Copyright © 2011-2022 走看看