程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 變量范圍

變量范圍

編輯:JAVA編程入門知識

  JScript 有兩種變量范圍:全局和局部。假如在任何函數定義之外聲明了一個變量,則該變量為全局變量,且該變量的值在整個持續范圍內都可以訪問和修改。假如在函數定義內聲明了一個變量,則該變量為局部變量。每次執行該函數時都會創建和破壞該變量;且它不能被該函數外的任何事物訪問。

  像 C++ 這樣的語言也有“塊范圍”。在這裡,任何一對“{}”都定義新的范圍。JScript 不支持塊范圍。

  一個局部變量的名稱可以與某個全局變量的名稱相同,但這是完全不同和獨立的兩個變量。因此,更改一個變量的值不會影響另一個變量的值。在聲明局部變量的函數內,只有該局部變量有意義。

var aCentaur = "a horse with rider,";  // aCentaur 的全局定義。

// JScript 代碼,為簡潔起見有省略。
function antiquities()  // 在這個函數中聲明了一個局部 aCentaur 變量。
{

// JScript 代碼,為簡潔起見有省略。
var aCentaur = "A centaur is probably a mounted Scythian warrior";

// JScript 代碼,為簡潔起見有省略。
   aCentaur += ", misreported; that is, ";  // 添加到局部變量。

// JScript 代碼,為簡潔起見有省略。
}  // 函數結束。

var nothinginparticular = antiquities();
aCentaur += " as seen from a distance by a naive innocent.";

/*
在函數內,該變量的值為 "A centaur is probably a mounted Scythian warrior,
misreported; that is, ";在函數外,該變量的值為這句話的其余部分:
"a horse with rider, as seen from a distance by a naive innocent."
*/  

  很重要的一點是注重變量是否是在其所屬范圍的開始處聲明的。有時這會導致意想不到的情況。

tweak();
var aNumber = 100;
function tweak()  {
var newThing = 0;  // 顯式聲明 newThing 變量。

    // 本語句將未定義的變量賦給 newThing,因為已有名為 aNumber 的局部變量。
    newThing = aNumber;

    //下一條語句將值 42 賦給局部的 aNumberaNumber = 42;
if (false)  {
    var aNumber;  // 該語句永遠不會執行。
    aNumber = 123;  //  該語句永遠不會執行。
    }  // 條件語句結束。

}  // 該函數定義結束。

  當 JScript 運行函數時,首先查找所有的變量聲明,

var someVariable;

  並以未定義的初始值創建變量。假如變量被聲明時有值,

var someVariable = "something";

  那麼該變量仍以未定義的值初始化,並且只有在運行了聲明行時才被聲明值取代,假如曾經被聲明過。

  JScript 在運行代碼前處理變量聲明,所以聲明是位於一個條件塊中還是其他某些結構中無關緊要。JScript 找到所有的變量後立即運行函數中的代碼。假如變量是在函數中顯式聲明的 — 也就是說,假如它出現於賦值表達式的左邊但沒有用 var 聲明 — 那麼將把它創建為全局變量。


 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved