Js中的類(lèi)型只有6種,其中基本數(shù)據(jù)類(lèi)型有5種分別為string,number,boolen,null,undefined,引用類(lèi)型有一種,就是object,o">
×

JS中一定要了解的數(shù)據(jù)類(lèi)型和數(shù)據(jù)轉(zhuǎn)換

分類(lèi):互聯(lián)網(wǎng)熱點(diǎn) 編輯:it知事 瀏覽量:1
2020-07-20 13:33:06
## 一、數(shù)據(jù)類(lèi)型 ### 前言 > Js中的類(lèi)型只有6種,其中基本數(shù)據(jù)類(lèi)型有5種分別為string,number,boolen,null,undefined,引用類(lèi)型有一種,就是object,object是一個(gè)大的綜合體,在JS中除了那5個(gè)基本數(shù)據(jù)類(lèi)型以外,其他的一切皆對(duì)象。以下是最近自學(xué)js整理的一些筆記,希望能讓更多初學(xué)者了解到數(shù)據(jù)類(lèi)型的基本概念。 ### 正文 **1.獲取變量類(lèi)型** typeof ```javascript var age = 18; console.log(typeof age); // 'number' ``` **2.基本數(shù)據(jù)類(lèi)型** 字符串(String),數(shù)值型(number),布爾型(boolean) ```html //a.字符串 var a = "laowangba"; //document.write(typeof(a)); //數(shù)值 var b = 123; var b1 = 123.1;---> 同樣是number類(lèi)型,不要判斷兩個(gè)浮點(diǎn)數(shù)是否相等. //布爾型 var c = ture; var d = false; ``` - Boolean字面量: true和false,區(qū)分大小寫(xiě) - 計(jì)算機(jī)內(nèi)部存儲(chǔ):true為1,false為0 **3.復(fù)合數(shù)據(jù)類(lèi)型** 對(duì)象(object),數(shù)組(array object) ```html //對(duì)象 var e = {'name':'niu','age':18}; ---> 等價(jià)于PHP中class a() ``` **4.其他數(shù)據(jù)類(lèi)型** 函數(shù),null,undefined ```html //函數(shù)類(lèi)型 var j = function(){}; //document.write(j); ---> 這里可能會(huì)有爭(zhēng)議,但typeof打印出來(lái)的確就有funcion類(lèi)型 //null類(lèi)型 var h = null; //document.write(h); ---> 空對(duì)象,對(duì)象類(lèi)型中的一個(gè)分支,沒(méi)有此對(duì)象的時(shí)候會(huì)顯示null. //alert(document.getElementById('notExistElement')); --->顯示為null,找不到此對(duì)象 //undefined類(lèi)型 var g; //document.write(i); ---> 打印一個(gè)不存在的變量,定義為undefined,未定義或者定義了,但未初始化 //alert(null == undefined);---> 顯示結(jié)果是true //alert(null === undefined);---> 顯示結(jié)果是false ``` ## 二、數(shù)據(jù)類(lèi)的轉(zhuǎn)換 **2.1 隱式轉(zhuǎn)換** 隱式轉(zhuǎn)換常用于if判斷等需要直接結(jié)果的地方. ````html undefined == null; // true 1 == true; // true 2 == true; // false 0 == false; // true 0 == ''; // true NaN == NaN; // false ---> NaN 注意:這是JS中一個(gè)特殊的表示,NaN表示不等于任何值.這個(gè)數(shù)值表示本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤了)。任何數(shù)值除以0都會(huì)導(dǎo)致錯(cuò)誤而終止程序執(zhí)行。一般使用isNaN()來(lái)判斷是否為NaN類(lèi)型. [] == false; // true [] == ![]; // true '6' - '3' // 3 1234 + 'abcd' // "1234abcd" ```` 1. undefined與null相等,但不恒等(===) 2. 一個(gè)是number一個(gè)是string時(shí),會(huì)嘗試將string轉(zhuǎn)換為number 3. 隱式轉(zhuǎn)換將boolean轉(zhuǎn)換為number,0或1 4. 隱式轉(zhuǎn)換將Object轉(zhuǎn)換成number或string,取決于另外一個(gè)對(duì)比量的類(lèi)型 5. 對(duì)于0、空字符串的判斷,建議使用 “===” 6. “==”會(huì)對(duì)不同類(lèi)型值進(jìn)行類(lèi)型轉(zhuǎn)換再判斷,“===”則不會(huì).它會(huì)先判斷兩邊的值類(lèi)型,類(lèi)型不匹配時(shí)直接為false **2.2顯示轉(zhuǎn)換** Number: ````javascript var a = Number('1'); var b = Number(1); var c = Number('c'); var d = Number(null); var e = Number(undefined); console.log(a,b,c,d,e); // 1 1 NaN 0 NaN // Number()可以把任意值轉(zhuǎn)換成數(shù)值,如果要轉(zhuǎn)換的字符串中有一個(gè)不是數(shù)值的字符,返回NaN ```` String: ```javascript String(1234); // "1234" String('abcd'); // "abcd" String(true); // "true" String(undefined); // "undefined" String(null); // "null" ``` Boolean: ```javascript var a = Boolean('0'); var b = Boolean(0); var c = Boolean('1'); var d = Boolean(null); var e = Boolean(undefined); var f = Boolean(NaN); console.log(a,b,c,d,e,f); //true false true false false false // 0、''(空字符串) 、null、 undefined 、NaN 會(huì)轉(zhuǎn)換成false 其它都會(huì)轉(zhuǎn)換成true ``` parseFloat: ```js var a = parseFloat('1.2df'); //1.2 var b = parseFloat('1.3.4'); //1.3 var c = parseFloat('c12'); //NaN var d = parseFloat(null); //NaN var e = parseFloat(undefined); //NaN console.log(a,b,c,d,e); // parseFloat() 把字符串轉(zhuǎn)換成浮點(diǎn)數(shù) // parseFloat()和parseInt非常相似, // 不同之處在與parseFloat會(huì)解析第一個(gè) . 遇到第二個(gè).或者非數(shù)字結(jié)束 // 如果解析的內(nèi)容里只有整數(shù),解析成整數(shù) ``` parseInt() ```js var a = parseInt('1.2df'); // var b = parseInt(1); var c = parseInt('c12'); var d = parseInt(null); var e = parseInt(undefined); console.log(a,b,c,d,e); //1 1 NaN NaN NaN // 如果第一個(gè)字符是數(shù)字會(huì)解析,直到遇到非數(shù)字結(jié)束 // 如果第一個(gè)字符不是數(shù)字或者符號(hào)就返回NaN ``` #### 2.3 字符串特別說(shuō)明 **1. 單引號(hào)和雙引號(hào)均可解析轉(zhuǎn)義字符** **2. 單引號(hào)和雙引號(hào)均不能解析變量** **3. 變量與字符串,變量與變量要使用+來(lái)拼接,區(qū)分開(kāi)PHP** **4. 單引號(hào)和雙引號(hào)可以互相嵌套,如果單引號(hào)中藥嵌套單引號(hào),需要將單引號(hào)轉(zhuǎn)義,同理,雙引號(hào)相同** ```html //單引號(hào)和雙引號(hào)為啥不能解析說(shuō)明 var a = 10; alert('a'); ---> 此處懵逼,到底是要輸出變量還是字符串?它不像PHP,有個(gè)$直接可以區(qū)分開(kāi)變量和字符串 alert('a'+ a); //+連接說(shuō)明 alert('hello' + 3 + 'world'); //hello3world alert(3 + 2 + 'hello' + 5 + 'world'); //5hello5world alert(4 + 4 + 'hello' + 4 + 5 + 'world'); //8hello45world ---> 左往右連接,兩個(gè)數(shù)字會(huì)理解為加號(hào),直到碰見(jiàn)不為數(shù)值則理解為拼接. ``` 如何打印一下字符串: ```js var s = '我很喜歡 雷鋒 \'的精神\' '; console.log(s); ``` - 字符串長(zhǎng)度 length屬性用來(lái)獲取字符串的長(zhǎng)度 ```js var str = 'Hello World'; console.log(str.length); ```

聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)

送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)

需注明出處:新網(wǎng)idc知識(shí)百科

免費(fèi)咨詢(xún)獲取折扣

Loading