必備知識:前面課程的學習
JavaScript 基礎知識
JavaScript 的很多語法借鑒自 Java,但也受 Awk,Perl 和 Python 影響。 同時,JavaScript 是大小寫敏感的,使用 Unicode 字符集。
在 JavaScript 中,語句用分號分隔(;),它也具有分號自動插入功能來結束語句。但是,建議隨時添加分號結束你的語句以避免副作用。
JavaScript 的注釋語法跟 C++ 和許多其他語言相同:
// 單行注釋
/* 這是一個多行注釋
多行注釋
*/
/* 但是, 你不能, /* 嵌套注釋 */ 語法錯誤 */
變量(Variables)
在編程中,使用變量來為值命名。在 JavaScript 中,一個標識符必須以字母、下劃線(_)或者美元($)符號開頭;后續的字符可以包含數字(0-9)。因為 JavaScript 語言是區分大小寫的,這里所指的字母可以是大寫的 “A” 到字母 “Z” 和小寫的 “a” 到 “z” 。
聲明變量(Declaring variables)
你可以用以下三種方式聲明變量:
- 使用關鍵詞 var。例如,var x = 42。這個語法可以同時用來聲明局部和全局變量。
- 直接賦值。例如,x = 42。這樣就聲明了一個全局變量并會導致 JavaScript 編譯時產生一個嚴格警告。因而你應避免使用這種非常規格式。
- 使用關鍵詞 let。例如,let y = 13。這個語法可以用來聲明語句塊代碼段的局部變量。
對變量求值(Evaluating variables)
用 var 或 let 聲明的未賦初值的變量,值會被設定為 undefined(即未定義值,本身也是一個值)。
試圖訪問一個未初始化的變量會導致一個 ReferenceError 異常被拋出:
var a;
console.log("The value of a is " + a); // logs "的值未定義"
console.log("The value of b is " + b); // 拋出ReferenceError異常
你可以使用 undefined 來確定變量是否已賦值。以下的代碼中,變量 input 未被賦值,因而 if 條件語句的求值結果是 true 。
var input;
if(input === undefined){
doThis();
} else {
doThat();
}
undefined 值在布爾類型環境中會被當作 false 。例如,下面的代碼將運行函數 myFunction ,因為數組 myArray 中的元素未被賦值:
var myArray = new Array();
if (!myArray[0]) myFunction();
數值類型環境中 undefined 值會被轉換為 NaN。
NaN為“Not a Number”,不是一個數字的縮寫。
var a;
a + 2; // Evaluates to NaN
當你對一個空變量求值時,空值null在數值類型環境中會被當作0來對待,而布爾類型環境中會被當作false
。例如:
var n = null;
console.log(n * 32); // logs 0
變量的域(Variable scope)
在所有函數之外聲明的變量,叫做全局變量,因為它可被當前文檔中的其他代碼所訪問。
在函數內部聲明的變量,叫做局部變量,因為它只能在該函數內部訪問。
全局變量實際上是全局對象的屬性。在網頁中,缺省的全局對象是 window,所以你可以用形如 window.variable的語法來設置和訪問全局變量。
語句塊中聲明的變量將成為語句塊所在代碼段的局部變量。例如,如下的代碼將在控制臺輸出 5,因為 x 的作用域是聲明了 x 的那個函數(或全局范圍),而不是 if 語句塊。
if (true) {
var x = 5;
}
console.log(x); // 5
如果使用 let 聲明,上述行為將發生變化。
if (true) {
let y = 5;
}
console.log(y); // ReferenceError: y is not defined
常量(Constants)
你可以用關鍵字 const 創建一個只讀(read-only)的常量。
常量標識符的命名規則和變量的相同:必須以字母、下劃線或美元符號開頭并可以包含有字母、數字或下劃線。
const prefix = '212';
常量不可以通過賦值改變其值,也不可以在腳本運行時重新聲明。它必須被初始化為某個值。
常量的作用域規則與 let 塊級作用域變量相同。若 const 關鍵字被省略了,該標識符將被視為變量。
在同一作用域中,不能用與變量或函數同樣的名字來命名常量。例如:
// THIS WILL CAUSE AN ERROR
function f() {};
const f = 5;
// THIS WILL CAUSE AN ERROR ALSO
function f() {
const g = 5;
var g;
}
原文:《變量和常量》(From 《Before Coding》)