數(shù)據(jù)類型:
原始類型(primitive type)和對象類型(object type)。
原始類型包括:
string number boolean null undefined
對象是屬性(property)的集合刺覆,每個屬性都由”名/值對“組成严肪。
其中有一個特殊的對象——全局對象(global object)
數(shù)組和函數(shù)都是對象,它們有自己獨特的語法。
如果函數(shù)用來初始化(使用new運算符)一個新建的對象驳糯,我們稱之為構(gòu)造函數(shù)(constructor)篇梭。
每個構(gòu)造函數(shù)定義了一類對象——由構(gòu)造函數(shù)初始化的對象的集合。類可以看作是對象類型的子類型酝枢。還有Date恬偷、RegExp、Error類
Javascript解釋器有自己的內(nèi)存管理機制帘睦。當不再有任何一個引用指向一個對象袍患,解釋器就會知道這個對象沒用了,然后自動回收它所占用的內(nèi)存資源竣付。
3.1 數(shù)字
JS采用IEEE 754標準定義的64位浮點格式表示數(shù)字诡延。
- 注意:JS中實際的操作(比如數(shù)組索引,位操作符)則是基于32位整數(shù)古胆。
- 注意:在任何數(shù)字直接量前添加負號可以得到它的負值肆良,但負號是一元求反運算符,并不是數(shù)字直接量語法的組成部分逸绎。
3.1.1 整型直接量
可識別十進制惹恃、十六進制
3.1.2浮點型直接量
整數(shù)部分+小數(shù)點+小數(shù)部分
指數(shù)計數(shù)法
3.1.3 算術(shù)運算
算數(shù)運算符
復雜運算:通過作為Math對象的屬性定義的函數(shù)和常量來實現(xiàn)。
JS中的算術(shù)運算在溢出棺牧、下溢和被零整除時不會報錯座舍。
溢出:數(shù)字運算結(jié)果超過了Js所能表現(xiàn)的數(shù)字上限,結(jié)果為Infinity或-Infinity
下溢:運算結(jié)果無限接近0陨帆,并比JS所能表現(xiàn)的最小值還小曲秉。返回
0,若是負數(shù)發(fā)生下溢疲牵,返回負零承二。
被零整除返回Infinity或-Infinity。
返回NaN:
0/0
Infinity/Infinity
給任意負數(shù)作開方運算
算術(shù)運算符和不是數(shù)字或無法轉(zhuǎn)換為數(shù)字的操作數(shù)一起使用纲爸。使用x!=x判斷NaN亥鸠,只有這個值返回true
函數(shù)IsNaN()參數(shù)是NaN或非數(shù)字值返回true
函數(shù)IsFinite()參數(shù)不是NaN或Infinity、-Infinity返回true
0 = -0 (作為除數(shù)時要留心)
3.1.4 二進制浮點數(shù)和四舍五入錯誤
var x =0.3-0.2
var y =0.2-0.1
x == y //false
x = 0.1 //false
y = 0.1 //true
舍入誤差
3.1.5 日期和時間
Date()構(gòu)造函數(shù)等
3.2 文本
字符串是一組由16位值組成的不可變的有序序列识啦。
3.2.1 字符串直接量
在ECMAScript5中字符串可拆分成多行负蚊,每行必須用反斜線\結(jié)束,另起一行用\n颓哮。
在JS和html中各自使用獨立的引號分隔家妆。
3.2.2 轉(zhuǎn)義字符
3.2.3 字符串的使用
用+連接字符串
字符串的多個屬性
3.2.4 模式匹配
RegExp()函數(shù)用來創(chuàng)建表示文本匹配模式的對象。這些模式稱為正則表達式冕茅。
3.3 布爾值
布爾值包含toString()方法伤极。
3.4 null和undefined
null是關(guān)鍵字蛹找,undefined是預定義的全局變量
3.5 全局對象
3.6 包裝對象
存取字符串、數(shù)字或布爾值的屬性時創(chuàng)建的臨時對象稱為包裝對象哨坪,它只是偶爾用來區(qū)分字符串值和字符串對象庸疾、數(shù)字和數(shù)值對象以及布爾值和布爾對象。
var str = "string" ;
此時str是基本字符串類型
str.length = 6 可以這樣使用的原因是js生成了值和str一樣的臨時對象当编,操作完成后臨時對象被刪除届慈。
嘗試給str增加一個方法:
str.t = 3
查看值:str.t = undefined 臨時對象被刪除
3.7 不可變的原始值和可變的對象引用
原始值(string、number忿偷、boolean金顿、null和undefined)與對象有著根本的區(qū)別。原始值不可更改牵舱!
通常將對象稱為對象引用(reference type),對象值都是引用。
3.8 類型轉(zhuǎn)換
3.8.1 轉(zhuǎn)換和相等性
3.8.2 顯示類型轉(zhuǎn)換
Number("3") //3
String(false) //"false"或使用false.toString()
Boolean([ ]) //true
Object(3) //new Number(3)
- 注意:除了null和undefined之外的任何值都具有toString()方法
3.8.3 對象轉(zhuǎn)換為原始值
對象——boolean 全部為true
對象——string
對象——number
3.9 變量聲明
3.10 變量作用域
3.10.1 函數(shù)作用域和聲明提前
函數(shù)的作用域是指在函數(shù)內(nèi)聲明的所有變量在函數(shù)體內(nèi)始終是可見的缺虐。這意味著變量在聲明之前甚至已經(jīng)可用(聲明提前)
3.10.2 作為屬性的變量
JS全局變量是全局對象的屬性