#再讀JS# (1)基本語法

大名張無忌發表於2020-09-23

以下為讀完阮一峰的《JavaScript 的基本語法》總結的易被忽略的知識點:

  • 語句與表示式

語句:JavaScript 程式的執行單位為行,一行就是一個語句。

var a=1+2;

表示式:指一個為了得到返回值的計算式。表示式的值為函式的返回值。

1+2  //值為3
console.log  //值為console.log
console.log(3)   //值為undefined

語句和表示式的區別在於,前者主要為了進行某種操作,一般情況下不需要返回值;後者則是為了得到返回值,一定會返回一個值。 ——並不絕對
空格和回車語句在語句中一般無意義,除return後跟回車再跟值js會自動補齊成return undefined造成錯誤

  • 變數

如果只是宣告變數而沒有賦值,則該變數的值是undefined。undefined是一個特殊的值,表示“無定義”。
如果變數賦值的時候,忘了寫var命令,這條語句也是有效的。但容易生成全域性變數,不建議。

a=1; //等同於 var a=1;

如果使用var重新宣告一個已經存在的變數,但沒有賦值,是無效的。
但是,如果第二次宣告的時候還進行了賦值,則會覆蓋掉前面的值。

  • 識別符號

第一個字元,可以是*任意 Unicode 字母(包括英文字母和其他語言的字母) * ,以及美元符號($)和下劃線(_)
所以中文也是可以的

  • 區塊

JavaScript 使用大括號,將多個相關的語句組合在一起,稱為“區塊”(block)。但var生成變數不受區塊的作用域限制

  • 三元運算子

(條件) ? 表示式1 : 表示式2
如果表示式1不寫,會造成死迴圈。

  • 標籤(label)

JavaScript 語言允許,語句的前面有標籤(label),相當於定位符,用於跳轉到程式的任意位置,標籤的格式:

label:
  語句

標籤通常與break語句和continue語句配合使用,跳出特定的迴圈。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

break跳出整個雙層迴圈,如是continue是跳出內層迴圈再外層繼續。
如果沒有top標籤,break只能跳出內層迴圈,繼續執行外層迴圈;而continue只能跳出內層迴圈那一次,繼續執行內層後面的。。
continue與標籤配合,同理。

參考:https://wangdoc.com/javascript/basic/grammar.html#%E8%AF%AD%E5%8F%A5