《JavaScript權威指南》真是名符其實的好書!真遺憾初學JavaScript時沒有當即讀這本書,甚爲遺憾。不太小有經驗以後讀來更是有如醍醐灌頂通常,許多以前遇到的奇怪問題和讀不懂的代碼都迎刃而解。這裏簡要記錄一下其中以爲很有價值的一些知識點。不過真心要學好JavaScript的同窗仍是耐心讀徹底書吧,雖然這本書900多頁,厚得使人生畏,但真的讀來不遺憾,很是有意義。 javascript
第一篇筆記的內容主要涉及:關鍵字、特殊值、數據類型及轉換等。 html
1. javascript區分大小寫,xhtml也區分大小寫,可是html不區分大小寫。(因此說html不夠嚴格嘛~) java
2. javascript保留字、ECMA擴展保留的關鍵字、javascript預約義的全局變量名或函數名: 數組
這幾個知識點特別容易弄混。我我的的理解是: 函數
- javascript保留字:真正意義上的保留字(關鍵字)
- ECMA擴展保留的關鍵字:結合java、C++等面嚮對象語言的思路,未來有可能新加入的關鍵字
- javascript預約義的全局變量名或函數名:javascript語言中提供的有用的經常使用的變量和函數
這幾個知識點通常是按照字母順序給出,但我以爲有時候不容易記住,因此按它們的功能進行了小歸類: this
(1)javascript保留字 編碼
- if分支語句:if, else
- switch分支語句:switch, case, default, break
- 循環語句:do, while, for, continue
- 異常處理語句:try, catch, finally, throw
- 獲取類型:typeof, instanceof
- 布爾值:true, false, null
- 函數相關:var, void, function, return
- 其餘:in, this, with, new, delete
(2)ECMA擴展保留的關鍵字 spa
- 基本數據類型:byte, char, boolean, int, short, long, float, double, enum
- 繼承:implements, extends, super
- 類與接口:class, interface
- 用來修飾函數的關鍵字:abstract, native, static, final, const, volatile, synchronized
- 導入導出:export, import
- 訪問權限:private, protected, public
- 其餘:goto, package, throws, transient, debugger
(3)javascript預約義的全局變量名或函數名 .net
- 數據類型:Number, Boolean, String, undefined, Object, Array, Function, Date, Math, RegExp, Error
- 錯誤類型:EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError
- 編碼:decodeURI, decodeURIComponent, encodeURI
- 轉義:escape, unescape
- 類型轉換:parentInt, parentFloat
- 特殊值及判斷:isFinite, isNaN, NaN, Infinity
- 其餘:arguments, eval
最後注意:咱們經常使用的函數alert()不屬於上面的三類。 debug
3. javascript數據類型:
- 基本數據類型:
- 數字:
- 整型直接量
- 八進制和十六進制的直接量
- 浮點型直接量(小數點和指數計數法兩種方式)
- 特殊值
- 文本字符串:由Unicode字符、數字、標點符號等組成的序列
- 布爾值
- 小數據類型:null, undefined
- 複合數據類型:對象:已命名的數據的集合,這些數據被做爲對象的屬性(或域)來引用
- 已命名的值的無序集合
- 數組:有編號的值的有序集合
- 函數:具備可執行代碼的對象
- 專用對象:對象的新的類:Date, Math, Error, RegExp
4. 數字中的特殊值:
- Infinity:表示無窮大的特殊值
- NaN:特殊的非數字值(產生未定義的結果或錯誤時出現,如除0)
- Number.MAX_VALUE:可表示的最大數字
- Number.MIN_VALUE:可表示的最小數字(與0最接近的數字)
- Number.NaN:特殊的非數字值
- Number.POSITIVE_INFINITY:表示正無窮大的特殊值
- Number.NEGATIVE_INFINITY:表示負無窮大的特殊值
注意:NaN和任何數值都不相等,包括它本身在內,所以須要用isNaN()來檢測。isFinite()用來檢測一個數字是不是NaN、正無窮大或負無窮大。
5. javascript字符串經常使用函數:
- .length:長度
- .charAt(a):取得第a個字符(從0開始)
- .subString(a, b):取得下標爲a到下標爲b-1的子字符串
- .indexOf('a'):查找第一個字母'a'的位置
6. javascript各種型相互轉換的對應值:
(1)undefined與其餘類型轉換:
- 布爾環境下:false
- 數字環境下:NaN
- 字符串環境下:undefined
- 對象環境下:Error
(2)null與其餘類型轉換:
- 布爾環境下:false
- 數字環境下:0
- 字符串環境下:null
- 對象環境下:Error
(3)布爾類型(true和false):
- 數字環境下:true爲1,false爲0
- 字符串環境下:true爲"true",false爲"false"
- 對象環境下:Boolean對象
(4)字符串(非空字符串與空字符串):
- 布爾環境下:非空爲true,空爲false
- 數字環境下:非空爲字符串的數字值或NaN,空爲0
- 對象環境下:String對象
(5)數字(Number對象:0、NaN、無窮、負無窮、任意其餘數字):
- 布爾環境下:0和NaN時爲false,無窮、負無窮和其餘任意數字時爲true
- 字符串環境下:0爲"0",NaN爲"NaN",無窮爲"Infinity",負無窮爲 "-Infinity",其餘任意數字就是該數字字符串值
(6)其餘對象:
- 布爾環境下:非空對象爲true
- 數字環境下:空對象則爲NaN,調用valueOf()方法若返回基本類型則使用該值,若返回對象本身則先調用toString()方法把對象轉換爲一個字符串,再把該字符串轉換爲一個數字
- 字符串環境下:調用toString()方法返回字符串的值
下一篇連接:《JavaScript權威指南》筆記(二)