JavaScript的基本語法
語句
JavaScript程式的執行單位為行,也就是一行一行地執行。一般情況下,每一行就是一個語句。
var a = 1 + 3;
表示式不需要分號結尾。一旦在表示式後面新增分號,則JavaScript引擎就將表示式視為語句,這樣會產生一些沒有意義的語句。
1 + 3;
"abc";
上面兩行語句只是單純的產生一個值,沒有任何實際的意義。
變數
變數是對值得具名引用。
注意:JavaScript的變數名區分大小寫,所以A和a是不同的變數。
如果只宣告變數沒有賦值,則該變數的值是undefined。undefined是一個特殊的值,表示無意義。
變數賦值的時候,忘了寫var關鍵字,這條語句也是有效的。
var a = 1;
// 基本等同
a = 1;
但是不謝var的做法不利於表達意圖,而且容易不知不覺的建立全域性變數。
JavaScript是一種動態型別語言,也就是說,變數的型別沒有限制,變數可以隨時更改型別。
var a = 1;
a = "hello";
如果使用var重新宣告一個已經存在的變數,是無效的。
var x = 1;
var x;
x // 1
上面程式碼中,變數x聲明瞭兩次,第二次宣告是無效的。
但是,如果第二次宣告的時候還進行了賦值,則會覆蓋掉前面的值。只要知道宣告和賦值是分開的兩步操作,就可以很容易理解了。
var x = 1; var x = 2; x // 2 // 等同於 var x = 1; var x; x = 2;
變數提升
JavaScript引擎的工作方式是,先解析程式碼,獲取所有的被宣告的變數。然後再一行一行的執行。這造成的結果就是所有的變數宣告語句,都被提升到程式碼的頭部,這就叫做變數提升。
console.log(a);
var a = 1;
因為變數提升,真正執行如下:
var a;
console.log(a);
a = 1;
// 結果顯示 <font color=red>undefined</font>
識別符號
按照要求命名,最好使用駝峰。
註釋
單行註釋://
多行註釋:/* 和 */
相容HTML註釋方式:
需要注意的是,-->只有在行首才被當成單行註釋,否則當成正常的運算子。
function countDown(n) {
while(n --> 0)
console.log(n);
}
countDown(3);
// 2
// 1
// 0
上面程式碼中,n --> 0實際上被當成n-- > 0,注意先判斷在做--,再console.log(),所以輸出2,1,0。
區塊
JavaScript使用大括號,將多個相關語句組合在一起,稱為區塊(block)。
對於var關鍵字來說,JavaScript的區塊不構成單獨的作用域(scope)。
{
var a = 1;
}
a // 1
上面程式碼在區塊內部,使用var關鍵字宣告並賦值了變數a,然後再區塊外部,變數a依然有效,區塊對於var命令不構成單獨的作用域。在JavaScript語言中,單獨使用區塊並不常見,區塊往往用來構成其他更復雜的語法結構,比如for、if、while、function等。
條件語句
if語句需要注意不要混淆賦值表示式(=)、相等運算子(==)和嚴格相等運算子(===)。
迴圈語句
和Java類似
break和continue
和Java類似,且可以使用break + label的方式跳出某個label塊。