广

JavaScript

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    [JavaScript高级进阶]JavaScript变量范围

    2018-04-03 22:13:31 次阅读 稿源:互联网
    零七广告

    JavaScript 有两种变量范围:全局和局部。如果在任何函数定义之外声明了一个,则该变量为全局变量,且该变量的值在整个持续范围内都可以访问和修改。如果在函数定义内声明了一个变量,则该变量为局部变量。每次执行该函数时都会创建和破坏该变量;且它不能被该函数外的任何事物访问。

    像 C++ 这样的语言也有“块范围”。在这里,任何一对“{}”都定义新的范围。JavaScript 不支持块范围。

    一个局部变量的名称可以与某个全局变量的名称相同,但这是完全不同和独立的两个变量。因此,更改一个变量的值不会影响另一个变量的值。在声明局部变量的函数内,只有该局部变量有意义。

    1. var aCentaur = "a horse with rider,";  // aCentaur 的全局定义。 
    2. // JavaScript 代码,为简洁起见有省略。 
    3. function antiquities()  // 在这个函数中声明了一个局部 aCentaur 变量。 
    4. // JavaScript 代码,为简洁起见有省略。 
    5. var aCentaur = "A centaur is probably a mounted Scythian warrior"
    6. // JavaScript 代码,为简洁起见有省略。 
    7.    aCentaur += ", misreported; that is, ";  // 添加到局部变量。 
    8. // JavaScript 代码,为简洁起见有省略。 
    9. }  // 函数结束。 
    10. var nothinginparticular = antiquities(); 
    11. aCentaur += " as seen from a distance by a naive innocent."
    12. /* 
    13. 在函数内,该变量的值为 "A centaur is probably a mounted Scythian warrior, 
    14. misreported; that is, ";在函数外,该变量的值为这句话的其余部分: 
    15. "a horse with rider, as seen from a distance by a naive innocent." 
    16. */   

    很重要的一点是注意变量是否是在其所属范围的开始处声明的。有时这会导致意想不到的情况。

    1. tweak(); 
    2.  
    3. var aNumber = 100; 
    4.  
    5. function tweak()  { 
    6.  
    7. var newThing = 0;  // 显式声明 newThing 变量。 
    8.  
    9.     // 本语句将未定义的变量赋给 newThing,因为已有名为 aNumber 的局部变量。 
    10.  
    11.     newThing = aNumber; 
    12.  
    13.     //下一条语句将值 42 赋给局部的 aNumber。aNumber = 42; 
    14.  
    15. if (false)  { 
    16.  
    17.     var aNumber;  // 该语句永远不会执行。 
    18.  
    19.     aNumber = 123;  //  该语句永远不会执行。 
    20.  
    21.     }  // 条件语句结束。 
    22.  
    23. }  // 该函数定义结束。 

    当 JavaScript 运行函数时,首先查找所有的变量声明,

    1. var someVariable; 

    并以未定义的初始值创建变量。如果变量被声明时有值,

    1. var someVariable = "something"

    那么该变量仍以未定义的值初始化,并且只有在运行了声明行时才被声明值取代,假如曾经被声明过。

    JavaScript 在运行代码前处理变量声明,所以声明是位于一个条件块中还是其他某些结构中无关紧要。JavaScript 找到所有的变量后立即运行函数中的代码。如果变量是在函数中显式声明的 — 也就是说,如果它出现于赋值表达式的左边但没有用 var 声明 — 那么将把它创建为全局变量。

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告