- JavaScript的數(shù)據(jù)類型分為兩種:原始類型和對象類型
原始類型又叫基本數(shù)據(jù)類型
對象類型又叫引用數(shù)據(jù)類型 - 區(qū)別:原始值不能更改窗看,對象值可以更改妹孙。
原始值存儲(chǔ)在棧內(nèi)存(stack)中
對象值存儲(chǔ)在堆內(nèi)存(heap)中
棧中存儲(chǔ)的是一個(gè)具體的值,可以直接拿來用庸队,堆存儲(chǔ)的是一塊數(shù)據(jù)积蜻,每塊數(shù)據(jù)有一個(gè)相應(yīng)的地址,地址一般存在棧中的一個(gè)變量里
原始類型(基本數(shù)據(jù)類型)
共有<strong>5種</strong>原始類型
number, string, boolean, null(空), undefined(未定義)
數(shù)字(number)
- 整型:一般以十進(jìn)制彻消,也可以使用十六進(jìn)制浅侨。
- 浮點(diǎn)型:
坑!
js通過一種二進(jìn)制法表示分?jǐn)?shù)证膨,轉(zhuǎn)換成我們常用過的十進(jìn)制分?jǐn)?shù)如输,會(huì)產(chǎn)生一個(gè)精度問題,如:
var x = 0.3 - 0.2
var y = 0.2 - 0.1
x == y // false
x == 0.1 //false
x = 0.09999999999999998
y = 0.1
所以當(dāng)使用浮點(diǎn)數(shù)進(jìn)行計(jì)算的時(shí)候,要根據(jù)需要注意取整不见,比如動(dòng)畫澳化。
字符串(string)
一組放在引號里的大串字符序列
可以使用<strong>String對象</strong>的所有屬性和方法(存在隱式轉(zhuǎn)換)
屬性:str.length
常用方法:str.charAt(0); str.substring(1,4); str.indexOf('e'); str.split('e');
布爾值
任意的JS值都可以轉(zhuǎn)為布爾值
undefined,null,0,-0,NaN,""空字符串都會(huì)轉(zhuǎn)成false
除此之外,包括<strong>對象稳吮、數(shù)組</strong>缎谷,都會(huì)轉(zhuǎn)成true
null(空)
是一個(gè)控對象的占位符,類型typeof(null)為object
undefined(未定義)
typeof為undefined
<strong>null,undefined,NaN的區(qū)別</strong>
一 類型分析
未定義的值和定義但還沒有賦值的值為undefined
null是一種特殊的object
NaN是一種特殊的number
二 比較運(yùn)算
1)undefined與null是相等(==)灶似,但不全等(===)列林;
2)NaN與任何值都不相等,與自己也不相等酪惭。
對象類型
對象是屬性的集合希痴,每個(gè)屬性都由名/值對構(gòu)成。值可以是原始值春感,如數(shù)字砌创、字符串,也可以是對象
- 普通的JS對象是“命名值”的無序集合
- 數(shù)組是一種特殊的對象鲫懒,表示帶編號的值的有序集合嫩实,擁有一些和普通對象不同的特有行為特征
- 函數(shù)也是一種特殊的對象
類(class)
數(shù)組(Array)類
函數(shù)(Function)類
日期(Date)類
正則(RegExp)類
錯(cuò)誤(Error)類