《JavaScript DOM 編程藝術(shù)(第2版)》讀書(shū)筆記三: JavaScript 語(yǔ)法

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)制)
      • String
    • 1種復(fù)雜數(shù)據(jù)類(lèi)型
      • Object : 一組無(wú)序的名值對(duì)組成
  • 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ù)不能重載
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棚赔,一起剝皮案震驚了整個(gè)濱河市帝簇,隨后出現(xiàn)的幾起案子徘郭,更是在濱河造成了極大的恐慌,老刑警劉巖丧肴,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件残揉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡芋浮,警方通過(guò)查閱死者的電腦和手機(jī)抱环,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纸巷,“玉大人镇草,你說(shuō)我怎么就攤上這事×鲋迹” “怎么了梯啤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)存哲。 經(jīng)常有香客問(wèn)我因宇,道長(zhǎng),這世上最難降的妖魔是什么祟偷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任察滑,我火速辦了婚禮,結(jié)果婚禮上修肠,老公的妹妹穿的比我還像新娘贺辰。我一直安慰自己,他們只是感情好嵌施,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布饲化。 她就那樣靜靜地躺著,像睡著了一般艰管。 火紅的嫁衣襯著肌膚如雪滓侍。 梳的紋絲不亂的頭發(fā)上蒋川,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天牲芋,我揣著相機(jī)與錄音,去河邊找鬼捺球。 笑死缸浦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的氮兵。 我是一名探鬼主播裂逐,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泣栈!你這毒婦竟也來(lái)了卜高?” 一聲冷哼從身側(cè)響起弥姻,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掺涛,沒(méi)想到半個(gè)月后庭敦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薪缆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年秧廉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拣帽。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疼电,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出减拭,到底是詐尸還是另有隱情蔽豺,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布峡谊,位于F島的核電站茫虽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏既们。R本人自食惡果不足惜濒析,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啥纸。 院中可真熱鬧号杏,春花似錦、人聲如沸斯棒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荣暮。三九已至庭惜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穗酥,已是汗流浹背护赊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留砾跃,地道東北人骏啰。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抽高,于是被迫代替她去往敵國(guó)和親判耕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容