JavaScript 語言的每一個值,都屬于某一種數(shù)據(jù)類型。JavaScript 的數(shù)據(jù)類型瘦穆,共有六種纪隙。(ES6 又新增了第七種 Symbol 類型的值)
數(shù)值(number):整數(shù)和小數(shù)(比如1和3.14)
字符串(string):文本(比如Hello World)。
布爾值(boolean):表示真?zhèn)蔚膬蓚€特殊值扛或,即true(真)和false(假)
undefined:表示“未定義”或不存在绵咱,即由于目前沒有定義,所以此處暫時沒有任何值
null:表示空值熙兔,即此處的值為空悲伶。
對象(object):各種值組成的集合。
通常住涉,數(shù)值麸锉、字符串、布爾值這三種類型舆声,合稱為原始類型(primitive type)的值花沉,即它們是最基本的數(shù)據(jù)類型,不能再細分了纳寂。對象則稱為合成類型(complex type)的值主穗,因為一個對象往往是多個原始類型的值的合成,可以看作是一個存放各種值的容器毙芜。至于undefined和null忽媒,一般將它們看成兩個特殊值。
對象是最復雜的數(shù)據(jù)類型腋粥,又可以分成三個子類型:
- 狹義的對象(object)
- 數(shù)組(array)
- 函數(shù)(function)
狹義的對象和數(shù)組是兩種不同的數(shù)據(jù)組合方式晦雨,除非特別聲明,本教程的”對象“都特指狹義的對象隘冲。函數(shù)其實是處理數(shù)據(jù)的方法闹瞧,JavaScript 把它當成一種數(shù)據(jù)類型,可以賦值給變量展辞,這為編程帶來了很大的靈活性奥邮,也為 JavaScript 的“函數(shù)式編程”奠定了基礎(chǔ)。
null和undefined
null與undefined都可以表示“沒有”罗珍,含義非常相似洽腺。將一個變量賦值為undefined或null,老實說覆旱,語法效果幾乎沒區(qū)別蘸朋。
對于null和undefined,大致可以像下面這樣理解扣唱。
null表示空值藕坯,即該處的值現(xiàn)在為空团南。調(diào)用函數(shù)時,某個參數(shù)未設置任何值炼彪,這時就可以傳入null吐根,表示該參數(shù)為空。比如辐马,某個函數(shù)接受引擎拋出的錯誤作為參數(shù)佑惠,如果運行過程中未出錯,那么這個參數(shù)就會傳入null齐疙,表示未發(fā)生錯誤膜楷。
undefined表示“未定義”,下面是返回undefined的典型場景贞奋。
var i;
i // undefined
// 調(diào)用函數(shù)時赌厅,應該提供的參數(shù)沒有提供,該參數(shù)等于 undefined
function f(x) {
return x;
}
f() // undefined
// 對象沒有賦值的屬性
var o = new Object();
o.p // undefined
// 函數(shù)沒有返回值時轿塔,默認返回 undefined
function f() {}
f() // undefined
1.變量沒有值 //undefined
2.有一個對象 object 現(xiàn)在還不想賦值 var obj=null 空對象
3.有一個對象 object 不想給支 var obj //undefined 非空對象
布爾值
如果 JavaScript 預期某個位置應該是布爾值特愿,會將該位置上現(xiàn)有的值自動轉(zhuǎn)為布爾值。轉(zhuǎn)換規(guī)則是除了下面六個值被轉(zhuǎn)為false勾缭,其他值都視為true揍障。
undefined
null
false
0
NaN
""或''(空字符串)
注意,空數(shù)組([])和空對象({})對應的布爾值俩由,都是true毒嫡。
數(shù)值
JavaScript 內(nèi)部,所有數(shù)字都是以64位浮點數(shù)形式儲存幻梯,即使整數(shù)也是如此兜畸。所以,1與1.0是相同的碘梢,是同一個數(shù)咬摇。
JavaScript精度最多只能到53個二進制位,這意味著煞躬,絕對值小于等于2的53次方的整數(shù)肛鹏,即-253到253,都可以精確表示恩沛。由于2的53次方是一個16位的十進制數(shù)值在扰,所以簡單的法則就是,JavaScript 對15位的十進制數(shù)都可以精確處理复唤。
根據(jù)標準健田,64位浮點數(shù)的指數(shù)部分的長度是11個二進制位烛卧,意味著指數(shù)部分的最大值是2047(2的11次方減1)佛纫。也就是說妓局,64位浮點數(shù)的指數(shù)部分的值最大為2047,分出一半表示負數(shù)呈宇,則 JavaScript 能夠表示的數(shù)值范圍為21024到2-1023(開區(qū)間)好爬,超出這個范圍的數(shù)無法表示。
如果一個數(shù)大于等于2的1024次方甥啄,那么就會發(fā)生“正向溢出”存炮,即 JavaScript 無法表示這么大的數(shù),這時就會返回Infinity蜈漓。如果一個數(shù)小于等于2的-1075次方(指數(shù)部分最小值-1023穆桂,再加上小數(shù)部分的52位),那么就會發(fā)生為“負向溢出”融虽,即 JavaScript 無法表示這么小的數(shù)享完,這時會直接返回0。
使用字面量(literal)直接表示一個數(shù)值時有额,JavaScript 對整數(shù)提供四種進制的表示方法:十進制般又、十六進制、八進制巍佑、二進制茴迁。
十進制:沒有前導0的數(shù)值。
八進制:有前綴0o或0O的數(shù)值萤衰,或者有前導0堕义、且只用到0-7的八個阿拉伯數(shù)字的數(shù)值。
十六進制:有前綴0x或0X的數(shù)值脆栋。
二進制:有前綴0b或0B的數(shù)值胳螟。
字符串
字符串就是零個或多個排在一起的字符,放在單引號或雙引號之中筹吐。
反斜杠(\)在字符串內(nèi)有特殊含義糖耸,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符丘薛。
需要用反斜杠轉(zhuǎn)義的特殊字符嘉竟,主要有下面這些。
\0 :null(\u0000)
\b :后退鍵(\u0008)
\f :換頁符(\u000C)
\n :換行符(\u000A)
\r :回車鍵(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
' :單引號(\u0027)
" :雙引號(\u0022)
\ :反斜杠(\u005C)
length 屬性:length屬性返回字符串的長度洋侨,該屬性也是無法改變的舍扰。
JavaScript 使用 Unicode 字符集。JavaScript 引擎內(nèi)部希坚,所有字符都用 Unicode 表示边苹。
對象
對象(object)是 JavaScript 語言的核心概念,也是最重要的數(shù)據(jù)類型裁僧。
什么是對象个束?簡單說慕购,對象就是一組“鍵值對”(key-value)的集合,是一種無序的復合數(shù)據(jù)集合茬底。
屬性的操作
取對象的屬性沪悲,有兩種方法,一種是使用點運算符阱表,還有一種是使用方括號運算符殿如。請注意,如果使用方括號運算符最爬,鍵名必須放在引號里面涉馁,否則會被當作變量處理。
數(shù)字鍵可以不加引號爱致,因為會自動轉(zhuǎn)成字符串谨胞。
屬性的查看
查看一個對象本身的所有屬性,可以使用Object.keys方法蒜鸡。
delete命令
delete命令用于刪除對象的屬性胯努,刪除成功后返回true。