JS中的數(shù)據(jù)類型
- 基本數(shù)據(jù)類型(值類型)
- number:數(shù)字
- string:字符串
- boolean:布爾
- null:空對(duì)象指針
- undefined:未定義
12 12.5 -12.5 0
'zhufeng' "珠峰" =>單雙引號(hào)包裹起來的都是字符串(單雙引號(hào)沒有區(qū)別)
true false =>布爾類型:只有兩個(gè)值
null
underfined
- 引用數(shù)據(jù)類型
- object對(duì)象數(shù)據(jù)類型
- {}普通對(duì)象
- []數(shù)組
- /^$/正則
- ...
- function函數(shù)數(shù)據(jù)類型
{name:'zfpx',age:8}
[12,23,34]
/^-?(\d|([1-9]\d+))(\.\d+)?$/
function fn(){ }
這么多的數(shù)據(jù)類型JS如何的去檢測(cè)呢锐想?(4種方法)
-
typepof : 檢測(cè)數(shù)據(jù)類型的運(yùn)算符
-
instanceof : 檢測(cè)某個(gè)實(shí)例是否屬于這個(gè)類型
-
constructor : 獲取當(dāng)前實(shí)例的構(gòu)造器
-
Object.prototype.toString.call : 獲取當(dāng)前實(shí)例的所屬類信息
typeof
使用 typeof 檢測(cè)巍实,返回的結(jié)果是一個(gè)字符串,字符串中包含的內(nèi)容證明了值是屬于什么類型的
[局限性]
1、 typeof null 不是‘null’ 而是‘object’ : 因?yàn)閚ull雖然是一個(gè)單獨(dú)的數(shù)據(jù)類型夕土,但是它原本意思是空對(duì)象值菠镇,瀏覽器使用typeof檢測(cè)的時(shí)候會(huì)把它按照對(duì)象來檢測(cè)
2几睛、使用typeof無法具體細(xì)分出到底是數(shù)組還是正則邓深,因?yàn)榉祷氐慕Y(jié)果都是“object”
image.png
騰訊面試題:
console.log(typeof typeof [ ]);的結(jié)果是啥
結(jié)果是 string
typeof 12 => "number"
var num =13;
typeof num =>"number"
布爾
Boolean()
把其它數(shù)據(jù)類型的值轉(zhuǎn)換成布爾類型
只有
0、NaN衙吩、空字符串互妓、null、underfined
這五個(gè)數(shù)據(jù)值轉(zhuǎn)換為布爾類型的是false坤塞,其余的都會(huì)是 true
!
!= : 不等于
嘆號(hào)在JS里還有一個(gè)作用:取反
,先把值轉(zhuǎn)換為布爾類型冯勉,然后再去取反
image.png
!!
在一個(gè)嘆號(hào)取反的基礎(chǔ)上再取反,取兩次反相當(dāng)于沒有操作摹芙,但是卻已經(jīng)把其它類型值轉(zhuǎn)換為布爾類型了灼狰,和Boolean是相同的效果
image.png
字符串
在JS中 單引號(hào) 和 雙引號(hào) 包起來的都是字符串
舉例子
12 是number 類型
'12' 是 string 類型
'[12,23]' 也是string 類型
常用方法:
charAt 、 charCodeAt
substr 浮禾、 substring交胚、 slice
toUpperCase、toLowerCase
indexOf 盈电、 lastIndexOf
split
replace
match
...
number 數(shù)字
0 12 -11 12.5 ,JS中多增加了一個(gè)number類型的數(shù)據(jù):
NaN
image.png
typeof NaN ->'number'
image.png
NaN