講一下 JavaScript 中的幾個簡單的概念,包括標識符、關鍵字和保留字。這些基本概念雖然不能直接提升我們的編程能力,但它們是 JavaScript 的基本組成元素。
標識符
標識符(Identifier)就是名稱的專業術語。JavaScript 標識符包括變量名、函數名、參數名和屬性名。
合法的標識符應該注意以下強制規則:
- 第一個字符必須是字母、下劃線(_)或美元符號($)。
- 除了第一個字符外,其他位置可以使用 Unicode 字符。一般建議僅使用 ASCII 編碼的字母,不建議使用雙字節的字符。
- 不能與 JavaScript 關鍵字、保留字重名。
- 可以使用 Unicode 轉義序列。例如,字符 a 可以使用“\u0061”表示。
示例
在下面示例中,定義變量 a,使用 Unicode 轉義序列表示變量名。
var \u0061 = "字符 a 的 Unicode 轉義序列是 \\0061";
document.write(\u0061);
使用轉義序列不是很方便,一般常用轉義序列表示特殊字符或名稱,如 JavaScript 關鍵字、程序腳本等。
關鍵字
關鍵字就是 ECMA-262 規定的 JavaScript 語言內部使用的一組名稱(或稱爲命令)。這些名稱具有特定的用途,用戶不能自定義同名的標識符。具體說明如表所示。
break | delete | if | this | while |
case | do | in | throw | with |
catch | else | instanceof | try | |
continue | finally | new | typeof | |
debugger(ECMAScript 5 新增) | for | return | var | |
default | function | switch | void |
保留字
保留字就是 ECMA-262 規定的 JavaScript 語言內部預備使用的一組名稱(或稱爲命令)。這些名稱目前還沒有具體的用途,是爲 JavaScript 升級版本預留備用的,建議用戶不要使用。具體說明如表所示。
abstract | double | goto | native | static |
boolean | enum | implements | package | super |
byte | export | import | private | synchronized |
char | extends | int | protected | throws |
class | final | interface | public | transient |
const | float | long | short | volatile |
ECMAScript 3 將 Java 所有關鍵字都列爲保留字,而 ECMAScript 5 規定較爲靈活。
例如,在非嚴格模式下,僅規定 class、const、enums、export、extends、import、super 爲保留字,其他 ECMAScript 3 保留字可以自由使用;在嚴格模式下,ECMAScript 5 變得更加謹慎,嚴格限制 implements、interface、let、package、private、protected、public、static、yield、eval(非保留字)、arguments(非保留字)的使用。
JavaScript 預定義了很多全局變量和函數,用戶也應該避免使用它們。具體說明如表所示。
arguments | encodeURL | Infinity | Number | RegExp |
Array | encodeURLComponent | isFinite | Object | String |
Boolean | Error | isNaN | parseFloat | SyntaxError |
Date | eval | JSON | parseInt | TypeError |
decodeURL | EvalError | Math | RangeError | undefined |
decodeURLComponent | Function | NaN | ReferenceError | URLError |
不同的 JavaScript 運行環境都會預定義一些全局變量和函數,上表列出的僅針對 Web 瀏覽器運行環境。