• JS的全局变量&局部变量


    1 <script>
    2     var i=10;  //全局变量
    3     j = 20;    //全局变量
    4 
    5     function(){
    6       var i=30; //局部变量
    7        h = 40;  //全局变量 
    8     }
    9 </script>

    由此可以总结一句话,在函数内部定义的就是局部变量,否则就是全局变量。

    1   <script>
    2     var i =10;
    3     function display(){
    4       //var i = 20;//局部变量只在局部作用域起作用
    5       i= 30; //全局的,会将i的值修改为30
    6     }
    7     alert(i);//结果为10  30
    8   </script>

    在函数内的变量没有var 声明,则会直接影响全局变量。

    为什么没有var的变量是全局的?

    是因为,在js中,如果在某个变量没有var声明,会自动到上一层作用域中去找这个变量的声明语句,如果找到,则调用;如果没有找到,继续向上查找,一直查找到全局作用域为止,如果全局作用域仍然没有这个变量的声明语句,那么就会自动在全局作用域中进行声明,这个就是js中的作用域链。

    1   <script>
    2    window.onload = function display(){
    3       i= 30;
    4     }
    5     alert(i);
    6   </script>

    弹出的结果就是30

    再看这个例子:

     1 <script>
     2    var i = 10;
     3     function fn1(){
     4       i=100;
     5       function fn2(){
     6         i=1000;
     7         function fn3(){
     8           i=10000;
     9         }
    10         fn3();
    11       }
    12       fn2();
    13     }
    14     fn1();
    15     alert(i);
    16 </script>

    执行的结果就是10000

    如果现在把 fn1中的i值改成 var = 100;则弹出i的值为:10;

    局部访问全局使用作用域链

    全局访问局部可以使用闭包函数模拟

  • 相关阅读:
    js 时间相关函数
    javascript面向对象:继承、多态
    面向对象相关
    reset.css css重置公共样式
    开通博客园第一天。
    vue 和 react 路由跳转和传参
    前端密码加密方式
    react组件回顶部
    移动端使用rem方法
    用rekit创建react项目
  • 原文地址:https://www.cnblogs.com/zmh7057/p/3817541.html
Copyright © 2020-2023  润新知