zoukankan      html  css  js  c++  java
  • JS-作用域链

           function test(){
               for(var i=0;i<10;i++){
                    for(var j=0;j<10;j++){
                        var temp=100;
                    }
               }
               alert(j); //这样我们的值都能访问得到呀
               //这个就是函数作用域的
               alert(temp); // 居然能访问到该值滴呀
           }

     解释上面的现象:

    1.javascript 中只有两种作用域:全局作用域和函数作用域;

     也就是说,for循环体中({})不能形成一个封闭额作用域与,

     它任然处于函数体内,所以......

    2.因为 Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关的

    function test(){
        a=0; //在js中 函数体呢,申明变量,如果没有使用var关键字,那么他是全局变量;
        alert(a);  
      }
      var a=4; //全局a等于4
      test();  //当执行test时候,由于作用域链问题,它会再当前作用域中(也就是test)中寻找,没有,接着在父级找,找到了赋值,也就覆盖了全局的a
      alert(a);
       //结果 0 0
       
      var sValue=1000;
      function sm(){
        alert(sValue);   //这个是undefied,能够找到定义,单没有赋值
        var sValue=100;  //此处才赋值滴呀
        alert(sValue);   //100
          
      }
      sm();
  • 相关阅读:
    HGE tutorial04
    HGE tutorial03
    HGE tutorial02 plus
    HGE tutorial02
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
  • 原文地址:https://www.cnblogs.com/mc67/p/4810245.html
Copyright © 2011-2022 走看看