《JavaScript權威指南》隨筆(一)

《Javascript權威指南》就是前端工程師口中常說的犀牛書,得名是由於中文翻譯出版的書籍封面是一隻犀牛,是學習JavaScript的必讀書籍。

JavaScript概述

JavaScript與Java無關,是面向Web的編程語言。前端

前端開發工程師必備的三樣技能:描述網頁內容的HTML;描述網頁樣式的CSS和描述網頁行爲的JavaScript。web

JavaScript是高端的、動態的、弱類型的編程語言,很是符合面向對象和函數式編程的思想。正則表達式

EMCAScript是JavaScript的標準。編程

JavaScript語言核心針對文本、數組、日期和正則表達式定義了許多API,但自己並不提供輸入輸出功能,輸入輸出功能由JavaScript的宿主環境(一般指的是web瀏覽器)提供。數組

詞法結構

字符集

  • 使用Unicode字符集,該字符集是ASCII和Latin-1的超集。
  • 區分大小寫。
  • 一般忽略換行符、製表符和連續空格。
  • 轉義序列以u開頭,使用4個十六進制字符表示
  • 容許多種方式對同一個字符編碼,並定義了標準化的解碼方式。

註釋

  • 在行尾「//」以後的文本都會被JavaScript認爲是註釋並被解釋器忽略。
  • 還可使用「/」和「/」來包含一段多行註釋,能夠跨行書寫,但不能夠嵌套。

直接量

  • 就是在程序中直接使用的數據值。例如:整數和小數,字符串,布爾值,null,正則表達式,對象,數組。

標識符和保留字

  • 用來對變量和函數命名的名字和標記
  • 必須以字符、下劃線(_)、美圓符號($)開頭,後續可使用字符、數字、下劃線、美圓符號。注意數字不容許做爲開頭出現,以便解釋器能夠區分標識符和數字。
  • 支持全部的Unicode字符集,可是爲了移植性考慮,建議只是用Unicode字符和數字。
  • 被拿來作本身的關鍵字的標識符被稱爲保留字。
  • 具體實現可能定義獨有的全局變量和函數,每種JavaScript運行環境都有全局屬性列表。

可選的分號

  • 使用分號分隔語句。
  • 當每條語句獨佔一行時,能夠省略分號。
  • 解釋器在缺乏分號就沒法運行的狀況下會自動添加分號(注意不必定是每一個換行符處)。
  • return break continue以後的表達式不能使用換行,雖然多數狀況下不會報錯,但會產生邏輯錯誤。

類型、值和變量

  • 表示並操做的值的類型稱做數據類型。
  • 變量是值的符號名稱,能夠經過名稱來得到對值的引用。
  • JavaScript的數據類型分爲兩類:原始類型和對象類型。
  • 原始類型包括數字、字符串和布爾值。除此以外還有兩個特殊的原始值:null和undefined。
  • 對象是屬性的集合,每一個屬性都由「名/值對」(值能夠是原始值,也能夠是對象)構成。
  • 普通的JavaScript對象是「命名值」的無序集合,數組是有序集合。
  • 函數也是一種特殊的對象。
  • 初始化(使用new運算符)一個新建的對象,咱們稱爲構造函數。
  • 每一個構造函數定義了一類(class)對象,表示由構造函數初始化對象的集合。
  • JavaScript語言核心定義了Array,Function,Date,RegExp和Error特殊的對象。
  • 解釋器有本身的內存管理機制,可自動進行內存的垃圾回收,當再也不有任何應用指向一個對象,該對象所佔內存資源被回收。
  • JavaScript自由進行數據類型轉換。
  • 變量是無類型的,能夠被賦予任何類型的值,使用var聲明變量。

數字

  • 不區分整數值和浮點數值,全部數字均用浮點數值表示。
  • 採用IEEE754標準定義的64位浮點格式表示數字,實際操做時則是基於32位整數。
  • 數字直接量前添加(-)號能夠獲得負值,(-)是一元求反運算符。

整型

  • 用一個數字序列表示十進制整數。
  • 以「0x」和「0X」位前綴的是十六進制直接量,其後用0-9和A-F表示。
  • ECMAScript標準不支持八進制表示,可是某些實現容許採用八進制表示整數。以數字0爲前綴,0-7的序列表示八進制數。
  • 嚴格模式下,明確禁止八進制數。

浮點型直接量

  • 能夠含有小數點,採用傳統的實數寫法,由整數部分,小數點和小數部分組成。
  • 還可採用指數計數法表示,實數後面跟字母e或者E,再加指數。

算術運算

  • 算數運算符是用來進行數字運算的。包括加法運算符(+),減法運算符(-),乘法運算符(*),除法運算符(/)和求餘運算符(%)。
  • 除基本運算符外,還支持更加複雜的算術運算,經過做爲Math對象的屬性定義的函數和常亮實現。

算術運算溢出、下溢或被零整除時不會報錯,結果爲特殊值。瀏覽器

  • 溢出時表示Infinity(正無窮)或-Infinity(負無窮)。基於它們的算術運算結果仍是Infinity(保留正負號)。
  • 下溢表示爲「負零」。返回0,不多用到。
  • 被零整除時用無窮表示,零除以零則用NaN表示,除此以外,無窮除以無窮,給負數開方都會獲得NaN。
  • NaN不等於自身,判斷NaN爲isNaN()方法,判斷無窮使用isFinite()方法。

二進制浮點數和四捨五入錯誤

  • IEEE-754浮點數表示法是一種二進制表示法。
  • 能夠精確表示1/二、1/8和1/1024這種,可是沒法精確表示1/十、1/100等。沒法精確表示0.1,因此0.3-0.2==0.2-0.1返回一個false。

日期和時間

  • Date()構造函數用來建立表示日期和時間的date對象,包含getFullYear()、getMonth()、getDate()、getDay()、getHours()、getUTCHours()方法。

文本

  • 字符串是16位不可變的有序序列。
  • 採用UTF-16編碼的Unicode字符集。

字符串直接量

  • 字符串直接量能夠寫在多行中,但每行必須以結束。

轉義字符

  • 以後加一個字符就不在表示他們的字面含義,例如n表示一個換行符。

字符串的使用

  • +表示字符串鏈接,將第二個字符串拼到第一個字符串的後面。
  • length屬性表示字符串的長度。
  • 字符串固定不變,變化是由於返回了新的字符串。

模式匹配

  • RegExp()函數是一個構造函數,建立正則表達式。

布爾值

  • 表示兩種狀態,使用保留字true和false。
  • 包含toString()方法,能夠轉換成‘true’和‘false’
相關文章
相關標籤/搜索