码迷,mamicode.com
首页 > 其他好文 > 详细

全局变量和局部变量

时间:2020-12-22 11:59:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:span   ons   使用   全局变量   一个   rgb   优先级   函数   页面   

var test = 5; //全局函数 任何地方都可使用 ,不管函数内还是函数外
      function a() {
        var a = 3; //局部变量 只能在函数内使用,不能在函数外
        console.log(a); //3
        console.log(test);//5
      }
      a();
      console.log(a); //无法找到变量a 因为他是函数体内的局部变量,
      console.log(test);//5 



      var test = 5;
      function a() {
        a = 3; //全局变量 因为没有var 所以无论在函数体内或外都能访问的到
        console.log(a); //3
        console.log(test); //5
      }
      a();
      console.log(a); //3
      console.log(test); //5 


    var test = 5;
    function a() {
      var test = 3; //局部变量虽然名与全局变量相同,互补影响
      console.log(test); //3  
      /* 
    因为在最外层的变量,会被作为window的属性,
    这时候就算函数内部声明了相同的变量,
    还是可通过window对象找到外部定义的变量,这就有了全局变量的功能。
       */
      console.log(window.test); //5
    }
    a();
    console.log(test); //5
变量可以分为全局变量和局部变量(或称私有变量) 
全局变量在整个页面中可见,并在页面任何位置被允许访问。 
局部变量只能在指定函数内可见,函数外面是不可见的,也不允许访问。
在函数内部使用var关键字声明的变量就是私有变量,该变量的作用域仅限于当前函数体内。
但是如果不使用var关键字定义的变量都是全局变量,不管是在函数内或者函数外,在整个页面脚本中都是可见的。
 var str1="hellow1";  //定义一个全局变量
    str2="hellow2";  //定义一个全局变量
    window.str3="hellow3";  //定义一个全局变量
    function func(){
      var str4="hellow4";//定义一个局部变量
      str5="hellow5";   //定义一个全局变量
    }




Javascript总是在不知不觉中就出人意料地创建了全局变量。就像:
  function func(){
        var a = b = 0;
        //. . .
    }


本想定义两个局部变量,但是代码却是 a 是局部变量,b 是全局变量。这是由于操作符的优先级是从右到左的,就像。
 var  a = ( b = 0 );

如果对链式赋值所有变量都进行了声明,就不会创建出不期待的全局变量。
 var a, b;
    a = b = 0;




全局变量的值存储在window中,通过window.a可以拿到变量a的值,而之前直接console.log(a);也可以拿到变量a的值,是因为console.log(a);是从window上拿的,由此可以知道,window.a === a。
  var a = 123;
    console.log(window.a == a);//true


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

局部变量
局部变量一般定义在函数当中,
变量b只存储在test函数中,在函数test中访问变量b,是完全可以访问到的。
如果是在test函数外面去访问test函数里面的变量b,是访问不到的,而且会报错,因为在全局中并没有定义变量b,直接访问没有被定义的变量b是会报错的。
 function test() {
      var b = 123; //局部变量
      console.log(b); //123
    }
    test();
    console.log(b);//报错


如果在test函数中访问全局的变量是可以访问的,
  var a = "aaa";
    function test() {
      var b = 123; //局部变量
      console.log(b); //123
      console.log(a);//aaa
    }
    test();
    console.log(b); //报错

1、js变量分为全局变量和局部变量,全局变量不能访问局部变量,局部变量可以访问全局变量。
2、彼此独立的函数,只能访问自己函数里的变量和全局变量,不能访问别人函数里的变量。
3、全局变量与局部变量之间会形成各自的作用域
 function test() {
      var b = 123; //局部变量
      console.log(b); //123
    }

    function index() {
      console.log(b);//访问不到test函数中的变量b   报错
    }
    test();
    index();


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

变量名的优先级(当有多个名字重复的变量时候)
局部变量高于同名全局变量;
参数变量高于同名全局变量;
局部变量高于同名参数变量;


- 函数体内部,局部变量的优先级比同名的全局变量高。
-未使用var关键字定义的变量都是全局变量。
-全局变量都是window对象的属性

 

全局变量和局部变量

标签:span   ons   使用   全局变量   一个   rgb   优先级   函数   页面   

原文地址:https://www.cnblogs.com/qiqi9/p/14147798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!