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

     <script></script>是一个域,如果页面中存在多个域,在页面中会一个域一个域的处理,并且会自上而下解析,如果变量在上面一个域中,下面的域中可以读到这个变量;

    例一:

    alert(a); // function a() {alert(4);}

    var a=1;

    alert(a); //1

    function a() {alert(2);}

    alert(a); //1

    var a=3;

    alert(a); //3

     function a() {alert(4);}

    alert(a);  //3

     a();不会调用function a() {alert(2);}或者 function a() {alert(4);},因为预解析仓库中没有任何函数了,最终的是a=3,所以a()相当于3();

     例二:函数也是一个域(同样有先预解析,再逐行执行代码)

    var a=1;

    function fn1() {

       alert(a);  //...

       var a=2; 函数自身的域中解析出a=...未定义

     fn1();

    alert(a); //1

     例三:

     var a=1;

    function fn1() {

       alert(a);  // 1 函数内部在预解析的时候没有找到任何变量,之后就会从子集作用域返回到父级作用域找,

        a=2; //此处的a有能力改变外部的变量var a=1;

     fn1();

    alert(a); // 2 

      例四:

     var a=1;

    function fn1(a) { //fn1(a)是一个局部变量,是一个空的值a=...

       alert(a);  // ...

        a=2; // a =2 没有改变外部变量var a=1

     fn1();

    alert(a); // 2 

      例五:

    1  var a=1;
     function fn1(var a=1:这里有下面fn1(a)传进来的参数a,此时的a来自全局变量 var a =1){
      alert(a); //1
      a =2; a就近原则 找到局部的变量 并改为2
     } 
      fn1(a);

      alert(a);  //1

      例六:内部怎么访问外部变量,想要获取函数内部的值,有两个方案;

    方案1 

    var str =''; //var str =大鸡腿~'';

     function fn1(){

    var a ='大鸡腿~';

    str =a; 

     }

    fn1(); 

     alert(str);

     方案2

      function fn2(){

     var a ='1223333;

     fn3(a);

    }

    fn2(); //先预解析,然后解读代码,执行到fn3(a)的时候,在内部找不到fn3 然后去父级找fn3,找到之后可以把变量传进去,也就是说在函数fn2内部可以调用外部函数fn3,并且传进参数。

      function fn3(a){

    alert(a); //1223333

    }

       例六:

    alert(a); 

    if() {

    var a=1;

    } 不是一个作用域 是一个通透的,var a=1放在里面和外面是一样的,

     ps:

    alert(fn1); //FF不能对下面的函数进行预解析,所以要想定义全局的函数或变量,尽量不要在if等语句中定义,这样会出现浏览器不兼容。

    if() {

    var a=1;

      function fn2(){

    alert('123');

    }//

    }

  • 相关阅读:
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
  • 原文地址:https://www.cnblogs.com/hilxj/p/7482636.html
Copyright © 2011-2022 走看看