1. 6種-基本數(shù)據(jù)類型:
⑴ 數(shù)值類型 Number
數(shù)值類型分為:
? ? ? 1.正負整數(shù) : 100;
? ? ? 2. 浮點數(shù) : 1.23奥帘;
? ? ? 3. 科學(xué)計數(shù)法 :1.23e-2 相當(dāng)于 1.23 * 10^-2;
? ? ? 4. 無窮大/無窮小 :Infinity / -Infinity思币;
? ? ? 5. 特殊的數(shù)值類型 :NaN 钞诡,注意點如下;
? ? ? ? ? ⑴ NaN 與任何 Number數(shù)據(jù)類型 做算術(shù)運算都得 NaN(包括其本身)遭赂;
? ? ? ? ? ⑵ NaN 與任何數(shù)值皆不相等循诉,包括 NaN == NaN横辆,返回 false撇他;
拓展:
? ? 獲取最大值 :Number.MAX_VALUE? 約等于(根據(jù)瀏覽器的不同)1.7976931348623157e+308;
? ? 獲取最小值 :Number.MIN_VALUE? 約等于(根據(jù)瀏覽器的不同)? ? ? ? 5e-324
? ? 雖然數(shù)字是無窮的狈蚤,但計算機的內(nèi)存是有窮盡的困肩,所以 JS 具有最大/最小值,若給最大值 * 10脆侮,會得到 Infinity锌畸。
(2)字符串類型 String
JS 中,表達字符串類型有兩種方法:
? ? 1. 使用一對單引號(英文符號)靖避,將數(shù)據(jù)包裹起來 :‘a(chǎn)bc’潭枣;
? ? 2.? 使用一對雙引號(英文符號),將數(shù)據(jù)包裹起來 :"abc"幻捏;
知識點:
? 1. 一般習(xí)慣上使用單引號盆犁,且同一份代碼文件,建議統(tǒng)一使用單引號 / 雙引號作為字符串的開始篡九;
? 2.單雙引號可以成對的互相嵌套: " '' " / ' "" '谐岁,不可以混合嵌套 :' " ' ",JS 在執(zhí)行代碼時榛臼,會把第一個遇到的單引號/雙引號作為字符串的開始伊佃,于是根據(jù)該引號,尋求下一個引號作為結(jié)束沛善,所以在單引號 / 雙引號的嵌套中航揉,第二個出現(xiàn)的雙引號 / 單引號會被認為是字符串的一部分進行解析;
? 3. 若一個字符串內(nèi)金刁,既包含單引號帅涂,又包含雙引號织咧,可以使用轉(zhuǎn)義符(反斜杠:\)來解決問題,JS 代碼在解析字符串時漠秋,會把轉(zhuǎn)義符后面的第一個符號解析為字符串的一部分 :單引號 \'? 笙蒙;雙引號? \"
⑶ 布爾類型 Boolean
布爾類型只有兩個值,常用于條件判斷語句:
? ? 1. true? 代表 真庆锦;
? ? 2. false? 代表 假捅位;
⑷ 特殊基本數(shù)據(jù)類型 Null
Null 只有唯一的一個值為 null;
? ? 1. 代表空搂抒,用typeof 判斷數(shù)據(jù)類型的時候艇搀,會返回 object
? ? 2. 一般常見于DOM操作,獲取不到數(shù)據(jù)的時候求晶,會返回 null焰雕,例如:頁面若不存在div標(biāo)簽,卻使用 document.querySelector('div') 去獲取div元素節(jié)點的時候芳杏,返回 null
? ? 3. 一般在聲明變量時矩屁,若變量值不確定,即可能由代碼在后面動態(tài)賦值爵赵,而當(dāng)前需要提前聲明而導(dǎo)致無法賦值時吝秕,建議使用 null作為默認值:var xx = null;? ? 而不是:var xx空幻;
⑸ 特殊基本數(shù)據(jù)類型 Undefined
Undefined 只有唯一的一個值為 undefined烁峭;
? 1. 代表未定義,常見于 :
? ? (1)聲明變量秕铛,卻未賦值 :var xx约郁;
? ? (2) 獲取數(shù)組中,超出數(shù)組下標(biāo)的值但两;
? ? (3)獲取對象中未定義的屬性 或方法鬓梅;
簡單理解 null 與 undefined 的區(qū)別:? null是 JS知道自己要獲取什么值,但是找不到符合條件的值镜遣;undefined 是 JS根本不知道只是一個什么東西己肮;
⑹ 【ES6新增屬性】Symbol
最全Javascript數(shù)據(jù)類型解析 - Alvabill的滿滿干貨 - CSDN博客
2. 2種復(fù)雜數(shù)據(jù)類型
⑴ 數(shù)組 Array
數(shù)組的三要素 :元素、下標(biāo)(下標(biāo)從0開始)悲关、長度(length)谎僻;
? ? 1. 數(shù)組多用于存放一組具有 排列順序的數(shù)據(jù),這個數(shù)據(jù)既可以是 基本數(shù)據(jù)類型寓辱,也可以是復(fù)雜數(shù)據(jù)類型艘绍;
? ? 2. 數(shù)組使用 typeof 檢驗數(shù)據(jù)類型是 會得到object,故建議使用其他檢驗數(shù)據(jù)類型方法檢驗(待補充新篇章秫筏,數(shù)據(jù)類型的檢驗方法)诱鞠;
? ? 3. 數(shù)組的聲明:
? ? ? (1)var arr = new Array();
? ? ? ? ? ? ? var arr = new Array(1,2,3);? 創(chuàng)建一個數(shù)據(jù)內(nèi)容為1挎挖,2,3的數(shù)組航夺;
? ? ? ? ? ? ? var arr = new Array(3);? ? 創(chuàng)建一個長度為3 的數(shù)組蕉朵;
? ? ? (2)var arr = Array();
? ? ? (3)var arr = []; 最常用
var arr = [1,2,3,];? 創(chuàng)建內(nèi)容為1阳掐,2始衅,3的數(shù)組,創(chuàng)建數(shù)組時缭保,若最后是以一個數(shù)據(jù)+逗號的形式結(jié)尾汛闸,逗號不起作用,一般忽略不寫艺骂;
var arr = [3];? 創(chuàng)建內(nèi)容為3 的數(shù)組诸老;
? 4. 數(shù)組的遍歷 :
⑵ 對象 Object?
對象分為? Object(對象) 和 Function(函數(shù)) 兩種 :
Object 對象:
? ? 1.? Object 是一種以鍵值對形式存儲數(shù)據(jù)的數(shù)據(jù)類型,這個數(shù)據(jù)既可以是 基本數(shù)據(jù)類型钳恕,也可以是復(fù)雜數(shù)據(jù)類型别伏;
? ? 2. Object 的聲明方法:
? ? ? (1)var obj = new Object();
? ? ? (2)var obj = {};? ? 最常用,推薦
? ? 3. 對象的聲明并賦值:
? ? 4. 對象的 獲取苞尝、修改與賦值:
? ? 5. 對象的遍歷 for-in :
Function 函數(shù):
函數(shù)中存放的是一段代碼
? ? 1. 函數(shù)的聲明:
? ? ? (1)function fun(形參) { 代碼 }? ? ? ? 函數(shù)的形參可以有默認值: 形參 = 默認值
? ? ? (2)var fun = function(形參) { 代碼 }? ? 使用變量接收 匿名函數(shù)
? ? ? (3)(function() { 代碼 })()? ? ? 一般函數(shù)只有被調(diào)用才會執(zhí)行畸肆,自執(zhí)行函數(shù)不需要調(diào)用就會制動執(zhí)行宦芦。
? ? 2. 函數(shù)內(nèi)的兩個特殊屬性:
? ? ? (1)arguments? ? 函數(shù)內(nèi)默認用來保存所有實參的一個數(shù)組宙址;
? ? ? (2)this? ? ? ? ? ? ? 對象 與 構(gòu)造函數(shù) 常用,這個屬性默認指待window本身调卑,但這不是固定的抡砂,簡單記憶就是,誰點出這個方法(函數(shù))恬涧,this就指向誰注益。? ? ? 默認的函數(shù)調(diào)用比如: obj()? 本質(zhì)是 window.obj(),window是一個JS中最頂級的對象溯捆。? 如果聲明一個對象丑搔,對象中有一個方法,方法中的this 就代表當(dāng)前這個對象提揍。
3. 基本數(shù)據(jù)類型 和 復(fù)雜數(shù)據(jù)類型 的區(qū)別
存儲方式不同
瀏覽器會在在計算機的內(nèi)存中啤月,分出多個空間用于緩存數(shù)據(jù),其中三個為 : 字符串常量區(qū)劳跃、棧谎仲、堆。
? (1)字符串常量區(qū)用于儲存唯一的(不重復(fù))字符串刨仑,當(dāng) JS代碼需要聲明變量存儲字符串時郑诺,會優(yōu)先在字符串常量區(qū)遍歷夹姥,看是否存在這個字符串,如存在辙诞,直接拷貝一份辙售,并將其跟變量名一起儲存于棧中,若不存在飞涂,則先生成一個在字符串常量區(qū)圾亏,再執(zhí)行拷貝操作。? ? ? ? ? ? ? ? ? ? 這一知識點涉及底層僅做了解封拧,它關(guān)系到的是字符串的恒定性志鹃,與 為什么使用DOM對象.innerHTML 的性能 比不上 document.createElement('標(biāo)簽名");? ? 等......
? (2)我們創(chuàng)建的基本數(shù)據(jù)類型,數(shù)據(jù)會和變量名一起儲存在 棧中泽西;
? (3)我們創(chuàng)建的復(fù)雜數(shù)據(jù)類型曹铃,數(shù)據(jù)會被儲存在堆中,而棧中儲存的的是變量名和數(shù)據(jù)在堆中的地址捧杉。? ? 之所以這樣處理是因為陕见,棧處理數(shù)據(jù)的速度比堆快,但存儲空間比堆小味抖。
影響:不同的儲存方式帶來的评甜,是數(shù)據(jù)處理的方式不同: