1. 數(shù)據(jù)類型簡(jiǎn)介
1.1 為什么需要數(shù)據(jù)類型
在計(jì)算機(jī)中氛雪,不同的數(shù)據(jù)所需占用的存儲(chǔ)空間是不同的米碰,為了便于把數(shù)據(jù)分成所需內(nèi)存大小不同的數(shù)據(jù)妓布,充分利用存儲(chǔ)空間樊展,于是定義了不同的數(shù)據(jù)類型呻纹。
1.2 變量的數(shù)據(jù)類型
變量是用來存儲(chǔ)值的所在處,它們有名字和數(shù)據(jù)類型专缠。變量的數(shù)據(jù)類型決定了如何將代表這些值的位存儲(chǔ)到計(jì)算機(jī)的內(nèi)存中雷酪。
JavaScript是一種弱類型或者說動(dòng)態(tài)語言。這意味著不用提前聲明變量的類型涝婉,在程序運(yùn)行過程中哥力,類型會(huì)被自動(dòng)確定。
var num; // 這里的num 不確認(rèn)屬于哪種數(shù)據(jù)類型
var num = 10; // 這是一個(gè)數(shù)字型
var areYouOk = '是的'; // 這一個(gè)字符串
在代碼運(yùn)行時(shí)墩弯,變量的數(shù)據(jù)類型是由 JS引擎根據(jù)=右邊變量值的數(shù)據(jù)類型來判斷的吩跋,運(yùn)行完畢之后,變量就確定了數(shù)據(jù)類型渔工。
2. 簡(jiǎn)單數(shù)據(jù)類型
JS把數(shù)據(jù)類型分為兩類:
(1)簡(jiǎn)單數(shù)據(jù)類型(Number锌钮,String,Boolean引矩,Undefined梁丘,Null)
(2)復(fù)雜數(shù)據(jù)類型(object)
2.1 簡(jiǎn)單數(shù)據(jù)類型(基本數(shù)據(jù)類型)
簡(jiǎn)單數(shù)據(jù)類型 | 說明 | 默認(rèn)值 |
---|---|---|
Number | 數(shù)字型侵浸,包含 整型值和浮點(diǎn)型值,如 21兰吟、0.21 | 0 |
String | 字符串類型通惫,如“張三”注意js 里面,字符串都帶引號(hào) | "" |
Boolean | 布爾值類型混蔼,如true、false珊燎,等價(jià)于1和0 | false |
Undefined | var a;聲明了變量a但是沒有給值惭嚣,此時(shí)a = undefined | undefined |
Null | var a = nul; 聲明了變量a 為空值 | nul |
2.2 數(shù)字型 Number
JavaScript數(shù)字類型既可以用來保存整數(shù)值,也可以保存小數(shù)(浮點(diǎn)數(shù))悔政。
2.2.1 Number:數(shù)字型進(jìn)制
(1)八進(jìn)制 0 ~ 7 程序里面數(shù)字前面加 0 表示八進(jìn)制
var num1 = 010; // 010 八進(jìn)制 轉(zhuǎn)換為 十進(jìn)制 就是 8
var num2 = 012; // 012 八進(jìn)制 轉(zhuǎn)換為 十進(jìn)制 就是 10
(2)十六進(jìn)制 0 ~ 9 a ~ f 數(shù)字前面加 0x 表示十六進(jìn)制
var num3 = 0x9; // 0x9 十六進(jìn)制 轉(zhuǎn)換為 十進(jìn)制 就是 9
var num4 = 0xa; // 0xa 十六進(jìn)制 轉(zhuǎn)換為 十進(jìn)制 就是 10
現(xiàn)階段只需要記住晚吞,在JS中八進(jìn)制前面加0,十六進(jìn)制前面加 0x
2.2.2 Number:數(shù)字型范圍
Number是數(shù)字類型谋国,JavaScript中數(shù)值的最大和最小值
Number.MAX_VALUE
Number.MIN_VALUE
2.2.3 Number:數(shù)字型的三個(gè)特殊值
Infinity槽地,代表無窮大,大于任何數(shù)值
-Infinity芦瘾,代表無窮小捌蚊,小于任何數(shù)值
NaN,Not a number近弟,代表一個(gè)非數(shù)值
2.2.4 Number:isNaN()
用來判斷非數(shù)字缅糟,并且返回一個(gè)值,如果是數(shù)字返回的是false祷愉,如果不是數(shù)字返回的是true
2.3 字符串型 String
字符串型可以是引號(hào)中的任意文本窗宦,其語法為雙引號(hào)""和 單引號(hào)''
因?yàn)?HTML 標(biāo)簽里面的屬性使用的是雙引號(hào),JS這里更推薦使用單引號(hào)二鳄。
2.3.1 String:字符串引號(hào)嵌套
JS 可以用單引號(hào)嵌套雙引號(hào)赴涵,或者用雙引號(hào)嵌套單引號(hào)(外雙內(nèi)單,外單內(nèi)雙)
2.3.2 String:字符串轉(zhuǎn)義符
轉(zhuǎn)義符 | 解釋說明 |
---|---|
\n | 換行符订讼,n 是newline的意思 |
\ \ | 斜杠 \ |
\ ' | ' 單引號(hào) |
\ * | " 雙引號(hào) |
\t | tab縮進(jìn) |
\b | 空格髓窜,b 是blank的意思 |
2.3.3 String:字符串長(zhǎng)度
字符串是由若干字符組成的,這些字符的數(shù)量就是字符串的長(zhǎng)度躯嫉。通過字符串的length 屬性可以獲取整個(gè)字符串的長(zhǎng)度纱烘。
2.3.4 String:字符串拼接
- 多個(gè)字符串之間可以使用 + 進(jìn)行拼接,其拼接方式為字符串 + 任何類型 = 拼接之后的新字符串
- 拼接前會(huì)把與字符串相加的任何類型轉(zhuǎn)成字符串祈餐,再拼接成一個(gè)新的字符串
2.4 布爾型 Boolean
布爾類型有兩個(gè)值:true和false擂啥。
布爾型和數(shù)字型相加的時(shí)候,true的值為1帆阳,false的值為0哺壶。
2.5 Undefined 和 Null
一個(gè)聲明后沒有被賦值的變量會(huì)有一個(gè)默認(rèn)值undefined(如果進(jìn)行相連或者相加時(shí)屋吨,注意結(jié)果)
var variable = undefined;
console.log(variable + '6'); // undefined6
console.log(variable + 6); // NaN
一個(gè)聲明變量給null值,里面存的值為空山宾。
var space = null;
console.log(space + '1'); // null1
console.log(space + 1); // 1
3. 獲取變量數(shù)據(jù)類型
3.1 獲取檢測(cè)變量的數(shù)據(jù)類型
typeof 可用來獲取檢測(cè)變量的數(shù)據(jù)類型
var num = 10;
console.log(typeof num); // number
4. 數(shù)據(jù)類型轉(zhuǎn)換
4.1 什么是數(shù)據(jù)類型轉(zhuǎn)換
使用表單至扰、prompt獲取過來的數(shù)據(jù)默認(rèn)是字符串類型的,此時(shí)就不能直接簡(jiǎn)單的進(jìn)行加法運(yùn)算资锰,而需要轉(zhuǎn)換變量的數(shù)據(jù)類型敢课。
通俗來說,就是把一種數(shù)據(jù)類型的變量轉(zhuǎn)換成另外一種數(shù)據(jù)類型绷杜。
通常會(huì)實(shí)現(xiàn)3種方式的轉(zhuǎn)換:
- 轉(zhuǎn)換為字符串類型
- 轉(zhuǎn)換為數(shù)字型
- 轉(zhuǎn)換為布爾型
4.2 轉(zhuǎn)換為字符串
方式 | 說明 | 案例 |
---|---|---|
變量.toString() | 轉(zhuǎn)成字符串 | var num = 1; alert(num.toString()); |
String(變量) 強(qiáng)制轉(zhuǎn)換 | 轉(zhuǎn)成字符串 | var num = 1; alert(String(num)); |
? 加號(hào)拼接字符串 | 和字符串拼接的結(jié)果都是字符串 | var num = 1; alert(num + '我是字符串'); |
4.3 轉(zhuǎn)換為數(shù)字型(重點(diǎn))
方式 | 說明 | 案例 |
---|---|---|
? parseInt(string)函數(shù) | 將string類型轉(zhuǎn)成整數(shù)數(shù)值型 | parseInt('78') |
? parseFloat(string)函數(shù) | 將string類型轉(zhuǎn)成浮點(diǎn)數(shù)數(shù)值型 | parseInt('78.21') |
Number(string)強(qiáng)制轉(zhuǎn)換 | 將string類型轉(zhuǎn)換為數(shù)值型 | Number('12') |
js隱式轉(zhuǎn)換(- * /) | 利用算數(shù)運(yùn)算隱式轉(zhuǎn)換為數(shù)值型 | '12....................' - 0 |
4.4 轉(zhuǎn)換為布爾型
方式 | 說明 | 案例 |
---|---|---|
Boolean()函數(shù) | 其他類型轉(zhuǎn)成布爾值 | Boolean('true') |
- 代表 空直秆、否定的值 會(huì)被轉(zhuǎn)換為false,如”鞭盟、0圾结、NaN、null齿诉、undefined
- 其余值都會(huì)被轉(zhuǎn)換為 true
console.log(Boolean(")); // false
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean('小')); // true console.log(Boolean(12)); // true