zoukankan      html  css  js  c++  java
  • javascript局部变量/全局变量

     转:js局部变量/全局变量

          原文地址:http://www.cnblogs.com/simhare/archive/2007/08/25/869440.html

          在js中如果用var来定义一个变量,如果该变量被定义在function或者其他循环体内,则变量为局部变量,并且该变量不会受到同名全局变量的影响,也不会影响同名的全局变量。如果不用var来定义变量而直接拿一个变量来使用则该变量会被自己定义为全局变量,无论该变量被定义在任何位置,如果在function或者循环体内用这种方式来定义变量,则该变量为全局变量若function或循环体外已经定义了同名的全局变量,则会直接引用function或循环体外定义的全局变量。
          注意:js中,一个函数里面若有循环体,则在循环体中定义的变量作于域会是整个函数,这一点根其他高级语言不一样。下面例子中的testVar(),在for循环中定义了一个局部变量i,该i的作用域就为整个函数体。
    例子:
     1 testNoVar()
     2 {
     3     for(i=0;i<10;i++)
     4     {
     5         if(i==5) break;
     6     }
     7     alert("testNoVar "+i);
     8 }
     9 
    10 function testVar()
    11 {
    12     for(var i=0;i<10;i++)
    13     {
    14         if(i==6) break;
    15     }
    16     alert("testVar "+i);
    17 }
    18 
    19 
    20 testNoVar();
    21 try
    22 {
    23     alert("behind testNoVar i value :"+i);
    24 }
    25 catch(e)
    26 {
    27     alert("behind testNoVar i value :"+e);
    28 }
    29 testVar();
    30 try
    31 {
    32     alert("behind testVar i value :"+i);
    33 }
    34 catch(e)
    35 {
    36     alert("behind testVar i value :"+e);
    37 }

    testNoVar中循环体内的i没有用var来定义,该i为全局变量。而testVar中的循环体用var定义了i,该i为局部变量,于是它不受到前面定义的全局变量的影响,所以该例子打印结果的先后循序为:
    "testNoVar 5" -> "behind testNoVar i value :5" -> "testVar 6" -> "behind testVar i value :5"

  • 相关阅读:
    Java实现代理服务器
    UML快速理解
    Linux常用命令
    线程数设置和CPU数的关系
    面试官:你在平时的工作中遇到过哪些问题让你印象深刻?
    常见的思考问题方法、处理问题工具
    分布式锁的几种使用方式(redis、zookeeper、数据库)
    MySQL数据库连不上?
    Oracle备份的几种方式
    ORACLE物理standby与逻辑standby简述
  • 原文地址:https://www.cnblogs.com/codewolf/p/2669069.html
Copyright © 2011-2022 走看看