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

1、JavaScript 的數(shù)據(jù)類型,共有七種。

數(shù)值(number)
字符串(string)
布爾值(boolean)
undefined
null
對象(object)
符號(symbol)ES6新增

通常,數(shù)值、字符串、布爾值這三種類型,合稱為原始類型(primitive type)的值,即它們是最基本的數(shù)據(jù)類型,不能再細分了。

對象則稱為合成類型(complex type)的值,因為一個對象往往是多個原始類型的值的合成,可以看作是一個存放各種值的容器。

至于undefined和null,一般將它們看成兩個特殊值。

① 數(shù)字(number)
JavaScript 內(nèi)部,所有數(shù)字都是以64位浮點數(shù)形式儲存,即使整數(shù)也是如此。所以,1與1.0是相同的,是同一個數(shù)。
十進制:沒有前導(dǎo)0的數(shù)值。(整數(shù)和小數(shù))
八進制:有前綴0o或0O的數(shù)值,或者有前導(dǎo)0、且只用到0-7的八個阿拉伯?dāng)?shù)字的數(shù)值。(011)
十六進制:有前綴0x或0X的數(shù)值。(0x11)
二進制:有前綴0b或0B的數(shù)值。(0b11)
科學(xué)計數(shù)法:(1.23e2)
JavaScript 語言的底層根本沒有整數(shù),所有數(shù)字都是小數(shù)(64位浮點數(shù))。容易造成混淆的是,某些運算只有整數(shù)才能完成,此時 JavaScript 會自動把64位浮點數(shù),轉(zhuǎn)成32位整數(shù),然后再進行運算。

由于浮點數(shù)不是精確的值,所以涉及小數(shù)的比較和運算要特別小心。

0.1 + 0.2 === 0.3
// false

0.3 / 0.1
// 2.9999999999999996

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

② 字符串(string)
字符串就是零個或多個排在一起的字符,放在單引號''或雙引號""之中。
字符串默認只能寫在一行內(nèi),分成多行將會報錯。
如果長字符串必須分成多行,可以在每一行的尾部使用反斜杠或使用'+'或者反引號"`"

var s='12345\
67890'  //'1234567890'
//或者
var s1='12345'+
'67890'  //1234567890
//或者
var s2=`12345
67890`  //1234567890

反斜杠(\)在字符串內(nèi)有特殊含義,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符。
需要用反斜杠轉(zhuǎn)義的特殊字符,主要有下面這些。

\0 :null
\b :后退鍵
\f :換頁符
\n :換行符
\r :回車鍵
\t :制表符
\v :垂直制表符)
\' :單引號
\" :雙引號
\\ :反斜杠

③ 布爾值(boolean)

表示真?zhèn)蔚膬蓚€值,即true(真)和false(假)
a && b 在 a 和 b 都為 true 時,取值為 true;否則為 false
a || b 在 a 和 b 都為 false 時,取值為 false;否則為 true

④ undefined null
null與undefined都可以表示“沒有”,含義非常相似。
null表示空值,即該處的值現(xiàn)在為空。調(diào)用函數(shù)時,某個參數(shù)未設(shè)置任何值,這時就可以傳入null,表示該參數(shù)為空。

undefined表示“未定義”

// 變量聲明了,但沒有賦值
var i;
i // undefined

// 調(diào)用函數(shù)時,應(yīng)該提供的參數(shù)沒有提供,該參數(shù)等于 undefined
function f(x) {
  return x;
}
f() // undefined

// 對象沒有賦值的屬性
var  o = new Object();
o.p // undefined

// 函數(shù)沒有返回值時,默認返回 undefined
function f() {}
f() // undefined

⑤ 對象(object)
對象是一組“鍵值對”(key-value)的集合,是一種無序的復(fù)合數(shù)據(jù)集合。

var a = {
  name:'frank',
  age:18,
  children:'null'
}

key必須為字符串形式,引號可以省略。但是根據(jù)標識符規(guī)則:1.首字母不能使數(shù)字、2.中間不能有空格、3.后邊必須是合法字符。

{9a:'wang'}//錯誤形式
{'9a':'wang'}//正確形式

調(diào)用時,有兩種方法:點方法和方括號法。

a['name']//正確

當(dāng)key的命名符合標識符規(guī)則時,可以改寫為點方法。

a.name//正確,特例

可以對對象中的key進行刪除。

delete a['name']
a.name //undefinedd (無value)
'name' in a //false (無key)

當(dāng)使用:

a['name']=undefined
'name' in a //true

此時,只是更改'name'屬性的value值為undefined,所以所以key還在。
遍歷對象(for....in...)

for (var key in a) //此時打印出key的值

如果需要打印出value的值

console.log(a[key])//正確方法
//錯誤方法示范
console.log(a.key)
//此時a.key===a['key'],
//而a中沒有'key'這個屬性

2、typeof 運算符
typeof運算符可以返回一個值的數(shù)據(jù)類型。

typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"

function f() {}
typeof f // "function"
typeof undefined // "undefined"
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
typeof /([a-z])/ //"object"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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