JavaScript語(yǔ)法直接看《JavaScript 高級(jí)程序設(shè)計(jì)》第3章內(nèi)容管宵,更詳細(xì)全面
1. 語(yǔ)法
區(qū)分大小寫(xiě):ECMAScript中的一切(變量稼钩、函數(shù)名和操作符)都區(qū)分大小寫(xiě)咧栗。
-
標(biāo)識(shí)符
- 就是指變量、函數(shù)、屬性的名字衰琐,或者函數(shù)的參數(shù)揩局。
- 一般ECMAScript標(biāo)識(shí)符采購(gòu)小寫(xiě)駝峰格式:myCar
- 不能把關(guān)鍵字毫玖、保留字、true谐腰、false 和 null 用作標(biāo)識(shí)符
-
注釋
// 單行注釋
-
多行注釋?zhuān)ǖ诙泻偷谌械拈_(kāi)頭星號(hào)可以省略孕豹,為了提高注釋的可讀性,一般都加上)
/* * 這是一個(gè)多行 *(塊級(jí))注釋 */
-
嚴(yán)格模式
ECMAScript 5 引入了嚴(yán)格模式(strict mode)的概念十气。為了不破壞ECMAScript3語(yǔ)法而特意選定的語(yǔ)法励背。
為JavaScript 定義了一種不同的解析與執(zhí)行模式。
-
啟用嚴(yán)格模式:
在整個(gè)腳本的頂部添加如下代碼: "use strict" 在函數(shù)內(nèi)部的上方添加 function doSomething() { "use strict"; //函數(shù)體 } //"use strict" 這行代碼其實(shí)是一個(gè)編輯指示(pragma),告訴支持的JavaScript引擎切換到嚴(yán)格模式
-
語(yǔ)句
ECMAScript中的語(yǔ)句以一個(gè)分號(hào)結(jié)尾
如果省略分號(hào)砸西,則由解析器確定語(yǔ)句的結(jié)尾
-
分號(hào)不是必須的叶眉,但是建議不要省略它
- 代碼行結(jié)尾處沒(méi)有分號(hào)回導(dǎo)致壓縮錯(cuò)誤
- 加上分號(hào),增加性能芹枷,解析器不必話(huà)時(shí)間推測(cè)應(yīng)該在哪里插入分號(hào)了
-
建議始終在控制語(yǔ)句中使用代碼塊——即使代碼塊只有一條語(yǔ)句
if (test) alert(test); // 有效但容易出錯(cuò)衅疙, 不要使用 if (test) { alert(test); // 推薦使用 }
2. 關(guān)鍵字和保留字
- 關(guān)鍵字和保留字不能用作標(biāo)識(shí)符
3. 變量
ECMAScript 的變量是松散類(lèi)型的,就是可以保存任何類(lèi)型的數(shù)據(jù)鸳慈。每個(gè)變量?jī)H僅是一個(gè)用于保存值得占位符而已
-
用var 定義變量
// 像這樣未被初始化得變量饱溢,會(huì)保存一個(gè)特殊的值-----undefined var message; // 也可直接初始化變量 var message = "hi"; message = 100; // 修改變量的同時(shí)修改值得類(lèi)型,有效走芋,但不推薦 //可以一條語(yǔ)句定義多個(gè)變量,用逗號(hào)分隔即可 var message = "hi", found = false, age = 29;
用var操作符定義的變量將成為該變量的作用域中的局部變量绩郎。如果函數(shù)中使用var定義一個(gè)變量,那么變量在函數(shù)退出后就會(huì)被銷(xiāo)毀
在嚴(yán)格模式下翁逞,不能定義名為eval 或 arguments 的變量肋杖,會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤
4. 數(shù)據(jù)類(lèi)型
-
ECMAScript 中有 的數(shù)據(jù)類(lèi)型(只有6種)
- 5種簡(jiǎn)單數(shù)據(jù)類(lèi)型(基本數(shù)據(jù)類(lèi)型)
- Undefined
- 只有一個(gè)值 undefined(變量未初始化時(shí)的值)
- 不必要把一個(gè)變量顯示地設(shè)置為undefined
- Null
- 只有一個(gè)值null(空指針對(duì)象)
- 只要意在保存對(duì)象的變量還沒(méi)有真正保存對(duì)象,就應(yīng)該明確地讓該變量保存null 值
- Boolean
- 兩個(gè)值true 和 false
- 可以對(duì)任何數(shù)據(jù)類(lèi)型的值調(diào)用Boolean()函數(shù)挖函,而且總會(huì)返回一個(gè)Boolean值
- Number
- 十進(jìn)制數(shù)
- 正數(shù)
- 浮點(diǎn)數(shù)
- 八進(jìn)制數(shù)(嚴(yán)格模式下無(wú)效, 最終被轉(zhuǎn)換成十進(jìn)制)
- 十六進(jìn)制數(shù)(最終被轉(zhuǎn)換成十進(jìn)制)
- 十進(jìn)制數(shù)
- String
- Undefined
- 1種復(fù)雜數(shù)據(jù)類(lèi)型
- Object : 一組無(wú)序的名值對(duì)組成
- 5種簡(jiǎn)單數(shù)據(jù)類(lèi)型(基本數(shù)據(jù)類(lèi)型)
-
typeof 操作符
-
檢測(cè)給定變量的數(shù)據(jù)類(lèi)型
var message = "some string" alert(typeof message); // "string" alert(typeof(message)); // "string" alert(typeof 95) // "number"
-
可能返回下列字符串:
- "undefined" : 如果這個(gè)值未定義
- "boolean" : 如果這個(gè)值是布爾值
- "string" : 如果這個(gè)值是字符串
- "number" : 如果這個(gè)值是數(shù)據(jù)
- "object" : 如果這個(gè)值是對(duì)象或null
- "function" : 如果這個(gè)值是函數(shù)
-
5. 操作符
- 一元操作符
- 遞增遞減操作符(前置和后置的區(qū)別)(++ , --)
- 一元加和減操作符 (+, -)
- 位操作符
- 按位非(NOT)(~)
- 按位與(AND)(&)
- 按位或 (OR)(|)
- 按位異或(XOR)(^)
- 左移(<<)
- 有符號(hào)的右移(>>)
- 無(wú)符號(hào)右移(>>>)
- 布爾操作符
- 邏輯非(!)
- 邏輯與(&&)
- 邏輯或(||)
- 乘性操作符
- 乘法(*)
- 除法(/)
- 求模(求余)(%)
- 加性操作符
- 加法(+)
- 減法(-)
- 關(guān)系操作符
- 小于(<)
- 大于(>)
- 小于等于(<=)
- 大于等于(>=)
- 相等操作符
- 相等和不相等(== , !=)
- 先轉(zhuǎn)換操作數(shù)(強(qiáng)制轉(zhuǎn)型)状植,再比較
- 全等和不全等(=== ,!==)
- 未經(jīng)轉(zhuǎn)換怨喘,直接比較
- 推薦使用全等和不全等
- 相等和不相等(== , !=)
- 賦值操作符
- 賦值(=)
- 乘/賦值(*=)
- 除/賦值(/=)
- 模/賦值(%=)
- 加/賦值(+=)
- 減/賦值(-=)
- 左移/賦值(<<=)
- 有符號(hào)右移/賦值(>>=)
- 無(wú)符號(hào)右移/賦值(>>>=)
- 逗號(hào)操作符
- 聲明多個(gè)變量
- 賦值:用于賦值時(shí)津畸,逗號(hào)操作符總會(huì)返回表達(dá)式中的最后一項(xiàng)
6. 語(yǔ)句
- if語(yǔ)句
- do-while語(yǔ)句
- while語(yǔ)句
- for語(yǔ)句
- for-in語(yǔ)句
- label語(yǔ)句
- break和continue語(yǔ)句
- with語(yǔ)句
- swith語(yǔ)句
7. 函數(shù)
- 無(wú)需指定函數(shù)的返回值,因?yàn)槿魏蜤CMAScript函數(shù)都可以再任何時(shí)候返回任何值
- 未指定返回值的函數(shù)返回的是一個(gè)特殊的undefined值
- ECMAScript中也沒(méi)有函數(shù)簽名的概念必怜,因?yàn)槠浜瘮?shù)參數(shù)是以一個(gè)包含零或多個(gè)值的數(shù)值的形式傳遞的
- 可以向ECMAScript函數(shù)傳遞任意數(shù)量的參數(shù)洼畅,并且可以通過(guò)arguments對(duì)象來(lái)訪問(wèn)這些參數(shù)
- 由于不存在函數(shù)簽名的特性,ECMAScript函數(shù)不能重載