數(shù)值(number):整數(shù)和小數(shù)
字符串(string):字符組成的文本
布爾值(boolean):true和false兩個特定值。
undefined:表示未定義或不存在。
null:表示空缺,即此處應(yīng)該有一個值,但此時為空。
對象(object):各種值組成的集合。
通常,我們將數(shù)值、字符串、布爾值稱為原始類型(primitive type),即它們是最基本的數(shù)據(jù)類型,無法再細分了。而將對象稱為合成類型(complex type)的值,因為一個對象往往是多個原始類型的值的合成,可以看作是一個存放各種值的容器。至于undefined和null,一般將它們看成兩個特殊值。typeof 12 // "number"
typeof '12' // "string"
typeof false //"boolean"
(2)函數(shù)
函數(shù)返回function。function a(){}
typeof a // "function"
(3)undefined
undefined返回undefined。typeof undefined // "undefined"
可用typeof檢測一個變量是否聲明。if(typeof a === "undefined" ){
}
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
十進制:沒有前導(dǎo)0的數(shù)值。
八進制:有前綴0o或0O的數(shù)值,或者有前導(dǎo)0、且只用到0-7的七個阿拉伯數(shù)字的數(shù)值。
十六進制:有前綴0x或0X的數(shù)值。
二進制:有前綴0b或0B的數(shù)值。
在十六進制中,0~9之間的數(shù)字和a(A)~f(F)之間的字母構(gòu)成,a~f的字母對應(yīng)的表示數(shù)字10~15
在浮點數(shù)中,我們還可以用指數(shù)記數(shù)法來表示,即在實數(shù)后跟字母e或E,后面再跟正負號,其后再加一個整型的指數(shù)。這種記數(shù)方法表示的數(shù)值,是由前面的實數(shù)乘以10的指數(shù)次冪。
12e3 /// 12*10*10*10=12000
1234567890123456789012
// 1.2345678901234568e+21
(2)小數(shù)點后的零多于5個// 小數(shù)點后緊跟5個以上的零,
// 就自動轉(zhuǎn)為科學(xué)計數(shù)法
0.0000003 // 3e-7
特殊數(shù)值
-0 === +0 //true
NaN === NaN //false
isNaN方法可以用來判斷一個值是否為NaN。isNaN(NaN) //true
isNaN(12) //false
注意:isNaN只對數(shù)值有效,如果傳入其他值,會被先轉(zhuǎn)成數(shù)值。比如,傳入字符串的時候,字符串會被先轉(zhuǎn)成NaN,所以最后返回true,這一點要特別引起注意。也就是說,isNaN為true的值,有可能不是NaN,而是一個字符串。isNaN('a') //true
typeof value === 'number' && isNaN(value)
判斷NaN更可靠的方法是,利用NaN是JavaScript之中唯一不等于自身的值這個特點,進行判斷。value !== value
'a'
"a"
單引號字符串的內(nèi)部,可以使用雙引號。雙引號字符串的內(nèi)部,可以使用單引號。'a \'b\' '
字符串默認只能寫在一行中。如果要拆分成數(shù)行,每行必須以反斜杠(\)結(jié)束。var a = " Hello \
world \
! \";
推薦在HTML中使用雙引號,在JavaScript中使用單引號。var a = 'Hello' + 'world';
字符串可以被視為字符數(shù)組,因此可以使用數(shù)組的方括號運算符,用來返回某個位置的字符(位置編號從0開始)。
var a = 'hello';
a[0] // "h"
a[1] // "e"
length屬性返回字符串的長度,該屬性也是無法改變的。var a = 'hello';
delete s[0];
s // "hello"
s[0] = 'a';
s // "hello"
\0 null(\u0000)
\b 后退鍵(\u0008)
\f 換頁符(\u000C)
\n 換行符(\u000A)
\r 回車鍵(\u000D)
\t 制表符(\u0009)
\v 垂直制表符(\u000B)
\' 單引號(\u0027)
\" 雙引號(\u0022)
\ 反斜杠(\u005C)
兩元邏輯運算符: && (And),|| (Or)
前置邏輯運算符: ! (Not)
相等運算符:===,!==,==,!=
比較運算符:>,>=,<,<=
布爾值常用于JavaScript總的控制結(jié)構(gòu)中。例如,JavaScript中的if..else語句,如果布爾值為true執(zhí)行第一段邏輯,如果為false執(zhí)行另一段邏輯。
如果JavaScript預(yù)期某個位置應(yīng)該是布爾值,會將該位置上現(xiàn)有的值自動轉(zhuǎn)為布爾值。轉(zhuǎn)換規(guī)則是除了下面六個值被轉(zhuǎn)為false,其他值都視為true。
undefined
null
false
0
NaN
""或''(空字符串)
var a;
a=1;
JavaScirpt是一種動態(tài)類型語言,也就是說,變量的類型沒有限制,可以賦予各種類型的值。
如果只是聲明變量而沒有賦值,則該變量的值是undefined。undefined是一個JavaScript關(guān)鍵字,表示“無定義”。
如果一個變量沒有聲明就直接使用,JavaScript會報錯,告訴你變量未定義。var a=1;
var a;
a //1
但是,如果第二次聲明的同時還賦值了,則會覆蓋掉前面的值。
var x=1;
var x=2;
x //2
聲明提前(變量提升)
var scope='global';
function f(){
console.log(scope); //輸出‘undefined’,而不是‘global’
var scope='local'; //變量在這里賦初始值,但變量本身在函數(shù)體內(nèi)任何地方均是有定義的。
console.log(scope); //輸出‘local’
}
var scope='global';
function f(){
var scope; //變量會提前到函數(shù)頭部執(zhí)行
console.log(scope); //輸出‘undefined’,而不是‘global’
scope='local'; //上面已經(jīng)聲明,這里只是賦值
console.log(scope); //輸出‘local’
}
更多建議: