Javascript是無類型的,這就意味著它的變數可以存放任何類型的值。必要時可以快速,自動的轉換類型。
變數聲明用var,一個var可以聲明多個變數,用逗號隔開,也可以將變數聲明和變數初始化綁定在一起。
重複的聲明和遺漏的聲明:var多次聲明同一變數是合法的。嘗試讀一個未聲明的變數的值,會產生一個錯誤,若給一價目未用var聲明的變數賦值,javascript會隱式聲明該變數,但是隱式聲明的變數總是被建立為全域變數。所以無論是全域還是局部變數最好都用var語句建立。如:
scope = "global"; //聲明一個全域變數
function checkscope( ) {
scope = "local"; // 改變了全域變數
document.write(scope); // 使用的是全域變數
myscope = "local"; // 隱式聲明新的全域變數
document.write(myscope); // 使用新的全域變數
}
checkscope( ); // 輸出"locallocal"
document.write(scope); // 輸出"local"
document.write(myscope); // 輸出"local"
函數定義可以嵌套
沒有塊級範圍
未定義的變數和未賦值的變數:讀未聲明的變數會產生錯誤,讀已聲明但未被賦值的變數,將得到一個預設值undefined.
基本類型和參考型別:數值,布爾值,null和未定義的值屬於基本類型,對象,數組和函數屬於參考型別。
無用儲存單元的收集:它是自動進行的,是不可見的。如:
var s = "hello"; // 為一個字串分配記憶體空間
var u = s.toUpperCase( ); // 建立一個新的字串
s = u; // 覆蓋對原始字串的引用
作為屬性的變數:變數基本上和對象的屬性是一樣的。
全域對象:當Javascript的解譯器開始運行時,首先建立一個全域對象,這個對象的屬性就是程式中的全域變數。
局部變數:調用對象。在執行一個函數時,函數的參數和局部變數是作為調用對象的屬性而儲存的。
Javascript的執行環境:
深入理解變數範圍:是範圍鏈和變數解析