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