JS 里的數(shù)據(jù)類(lèi)型

數(shù)據(jù)類(lèi)型分為:數(shù)值Number,字符串String,布爾值Boolean,Symbol,Null,Undefined,對(duì)象Object

其中,數(shù)值,字符串,布爾值為原始類(lèi)型

對(duì)象是最復(fù)雜的數(shù)據(jù)類(lèi)型,又可以分成三個(gè)子類(lèi)型。

1.狹義的對(duì)象(object)
2.數(shù)組(array)
3.函數(shù)(function)

1.判斷數(shù)據(jù)類(lèi)型

用typeof運(yùn)算符判斷數(shù)據(jù)類(lèi)型,像數(shù)值、字符串、布爾值就會(huì)分別返回number、string、boolean。
注意以下幾個(gè)案例的typeof的返回值,比較特殊

typeof undefined  //undefined
typeof null  //object
typeof fn  //function

2.Number

浮點(diǎn)數(shù)

JavaScript內(nèi)部使用64位浮點(diǎn)數(shù),如遇到只有整數(shù)才能完成的運(yùn)算,則轉(zhuǎn)為32位整數(shù)。
由于浮點(diǎn)數(shù)不是精確的值,所以涉及小數(shù)的比較和運(yùn)算要特別小心。

0.1 + 0.2 === 0.3
// false
0.3 / 0.1
// 2.9999999999999996
(0.3 - 0.2) === (0.2 - 0.1)
// false

范圍精度:-2^53 ~2^53
數(shù)值范圍 2^-1023 ~2^1024

表示方式:

var a = 1
var a = .1
var a = 1.23e2
Ob11 //二進(jìn)制
011 //八進(jìn)制
0x11 //十六進(jìn)制

特殊數(shù)值:

(1)+0與-0
除了做分母分別返回 + Infinity/-Infinity 外,二者可以看作相等。
(2)NaN
表示“非數(shù)字”,屬于Number,不等于任何值。不論怎么算,都返回一個(gè)NaN。
tips 0/0 // NaN
(3)Infinity
使用場(chǎng)景:值過(guò)大/值過(guò)小/0做分母

與數(shù)值相關(guān)的全局方法:

(1)parseInt()
基本用法:
1.將字符串轉(zhuǎn)換為整數(shù)(一個(gè)個(gè)依次轉(zhuǎn),轉(zhuǎn)到不能轉(zhuǎn)為止)
2.接受第二個(gè)參數(shù)表示進(jìn)制
parseInt('1000',2) //8
(2)parseFloat()
基本用法:
1.用于將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)(一個(gè)一個(gè)依次轉(zhuǎn),轉(zhuǎn)到不能轉(zhuǎn)為止)
2.當(dāng)轉(zhuǎn)換的目標(biāo)不是字符串(如{})/第一個(gè)不能轉(zhuǎn)換為浮點(diǎn)數(shù)(如'FF2')/空 的時(shí)候,返回NaN
(3)isNaN
用于判斷值是否為NaN,只對(duì)數(shù)值有效。(不是數(shù)值?轉(zhuǎn)!)
tips:判斷NaN可以利用其唯一不等于自身的特點(diǎn)

function myIsNaN(Value){
return value !==value;}

3.String

每個(gè)字符在JS中以 16 位 UTF-16 格式儲(chǔ)存,也就是說(shuō),JavaScript 的單位字符長(zhǎng)度固定為16位長(zhǎng)度,即2個(gè)字節(jié)。比如四字節(jié)字符??,瀏覽器會(huì)正確識(shí)別這是一個(gè)字符,但是 JavaScript 無(wú)法識(shí)別,會(huì)認(rèn)為這是兩個(gè)字符。

String表示舉例:

var a = 'Hi'
var a = "Hi"
var a = '' //長(zhǎng)度為0
var a = ' ' //加空格,長(zhǎng)度為1

多行字符串

(1)將一個(gè)字符串分成三行寫(xiě),JavaScript 就會(huì)報(bào)錯(cuò)。如果長(zhǎng)字符串必須分成多行,可以在每一行的尾部使用反斜杠。
但是如果在\后面有空格,瀏覽器就會(huì)報(bào)錯(cuò),而我們卻看不出來(lái),容易產(chǎn)生BUG,推薦使用第二種方法。
(2)連接運(yùn)算符(+)可以連接多個(gè)單行字符串,將長(zhǎng)字符串拆成多行書(shū)寫(xiě),輸出的時(shí)候也是單行。

var longString = 'Long '
  + 'long '
  + 'long '
  + 'string';

(3)鍵盤(pán)1旁邊的反引號(hào)

ES6新增支持這種寫(xiě)法,更簡(jiǎn)便,可讀性沒(méi)有明顯提高。

var s = `Hello
World`

字符串轉(zhuǎn)義

反斜杠(\)在字符串內(nèi)有特殊含義,用來(lái)表示一些特殊字符,所以又稱為轉(zhuǎn)義符。

\0 :null
\b :后退
\f :換頁(yè)
\n :換行
\r :回車(chē)
\t :制表符
\v :垂直制表符
' :'
\ :
如果在非特殊字符前面使用反斜杠,則反斜杠會(huì)被省略。

字符串的長(zhǎng)度

.length屬性返回字符串的長(zhǎng)度,該屬性也是無(wú)法改變的。

'\t\n1' 的 length 為 3
'\"' 的 length 為 1

4.Null和Undefined

都表示“沒(méi)有”。區(qū)別在于null是一個(gè)表示“空”的玩意,轉(zhuǎn)換數(shù)值為0,undefined是一個(gè)表示“此處無(wú)定義”的原始值,轉(zhuǎn)換后為NaN。

Null典型場(chǎng)景:

1.有一個(gè)對(duì)象object,現(xiàn)在還不想賦值

Undefined典型場(chǎng)景

1.有一個(gè)變量,沒(méi)有被賦值
2.有一個(gè)非對(duì)象,不想賦值
3.調(diào)用函數(shù),應(yīng)該提供的參數(shù)未提供
4.函數(shù)沒(méi)有返回值時(shí),返回

5.Boolean

兩個(gè)值,true/false。
兩元邏輯運(yùn)算符: && (And),|| (Or)
前置邏輯運(yùn)算符: ! (Not)
相等運(yùn)算符:===,!==,==,!=
比較運(yùn)算符:>,>=,<,<=

6.Object(復(fù)雜類(lèi)型)

是一組鍵值對(duì)的集合(key-value)
是一種無(wú)序的復(fù)合數(shù)據(jù)集合。

關(guān)于鍵值對(duì)

是鍵名加鍵值的組合,其中,鍵名全是字符串,可以是空字符''。
'中文' '9a' 'a b' 這種特殊的,必須加單引號(hào),如果不想加,那么你的鍵名就要符合標(biāo)識(shí)符規(guī)范。

Delete刪除Key

可以利用delete刪除key。刪除后,無(wú)key也無(wú)value

屬性的操作

(1)讀取對(duì)象的屬性
1.點(diǎn)運(yùn)算 obj.p
2.方括號(hào) obj['p']
注意,如果使用方括號(hào)運(yùn)算符,鍵名必須放在引號(hào)里面,否則會(huì)被當(dāng)作變量處理。
數(shù)值鍵名不能使用點(diǎn)運(yùn)算符(因?yàn)闀?huì)被當(dāng)成小數(shù)點(diǎn)),只能使用方括號(hào)運(yùn)算符。
(2)查看對(duì)象屬性
查看一個(gè)對(duì)象本身的所有屬性,可以使用Object.keys方法。

var obj = {
  key1: 1,
  key2: 2
};
Object.keys(obj);
// ['key1', 'key2']

(3)判斷是否存在 in
in運(yùn)算符用于檢查對(duì)象是否包含某個(gè)屬性(注意,檢查的是鍵名,不是鍵值),如果包含就返回true,否則返回false。
(4)屬性的遍歷 for...in
for...in循環(huán)用來(lái)遍歷一個(gè)對(duì)象的全部屬性。

var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
  console.log(obj[i]);
}
// 1
// 2
// 3

for...in循環(huán)有兩個(gè)使用注意點(diǎn)。
1.它遍歷的是對(duì)象所有可遍歷(enumerable)的屬性,會(huì)跳過(guò)不可遍歷的屬性。
2.它不僅遍歷對(duì)象自身的屬性,還遍歷繼承的屬性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容