JS犀牛書學習筆記——第三章 型別、值和變數
第三章 型別、值和變數
資料型別分為原始資料型別(數字、字串和布林值)和物件資料型別;
特殊原始值:null和undefined;
數字
JavaScript支援複雜的算術運算,通過作為Math物件的屬性定義的函式和常量;
算術運算在溢位(±Infinity)、下溢(0)或被零整除的時候不會報錯;
NaN非數字值,他和任何值都相等,包括自身;
二進位制浮點數和四捨五入錯誤;
用大整數進行重要的金融計算
字串直接量
當js程式碼和HTML程式碼混雜在一起的時候,最好在js和HTML程式碼中各自使用獨立的引號風格
ES3字串直接量必須寫在一行,ES5字串直接量可拆分成數行,每行必須以反斜線結束;
字串提供了許多可以呼叫的方法;
ES5中,字串可以當作只讀資料,除了charAt(),還可以用方括號來訪問字串的單個字元;
布林值
任意js的值都可以轉換為布林值,undefined,null,0,-0,NaN,空字串都會被轉換成false,其他所有值,包括所有物件(陣列)都會被轉換成true;
null和undefined
都表示值的空缺,要使用嚴格相等運算子“===”來區分它們;
全域性物件
當js啟動器啟動時(或者任何Web瀏覽器載入新頁面的時候),他將建立一個新的全域性物件,比給他一組定義的初始屬性;
包裝物件
js物件是一種複合值,他是屬性或已命名值的集合;
存取字串、數字或布林值的屬性時建立的臨時物件稱作包裝物件;
不可變的原始值和可變的物件引用
原始值的比較是值的比較;
物件的比較並非值的比較(兩個物件包含同樣的屬性及相同的值,但他們也是不等的),物件也稱為引用型別,物件值都是引用;
物件的比較均是引用的比較,想比較兩個單獨的物件或陣列,則必須比較它們的屬性或元素;
型別轉換
js運算子和語句期望使用多樣化的資料型別,並可以相互轉化;
型別轉換表p49;
顯式型別轉換:toFixed()
toExponential()
toPrecision()
Number()
parseInt()
parseFloat()
物件轉換為原始值:toString()
valueOf()
函式作用和宣告提前:
函式作用域是指在函式內宣告的所有變數在函式體內始終是可見的;
由於函式作用域的特性,區域性變數在整個函式體始終是有定義的,函式體內區域性變數遮蓋了同名全域性變數,只有在執行賦值語句時才會被真正賦值;