標(biāo)識符
標(biāo)識符就是變量、對象抡秆、屬性的名字奕巍。
標(biāo)識符規(guī)范
- 第一個(gè)字符必須是字母、下劃線或美元符$
- 其他字符可以是字母儒士、數(shù)字伍绳、下劃線或美元符$
- 不能把關(guān)鍵字、保留字乍桂、true冲杀、false、null睹酌、Infinity权谁、NaN、Undefined用做標(biāo)識符
數(shù)據(jù)類型
- 數(shù)字(Number):整數(shù)和小數(shù)
- 字符串(String): 字符組成的文本
- 布爾值(Boolean): true和false
- undefined : 表示“未定義”或不存在憋沿,即由于目前沒有定義旺芽,所以此處暫時(shí)沒有任何值
- null :表示無值,即此處的值就是“無”的狀態(tài)。
- 對象(Object): 各種值的集合
- Symbol :
通常采章,我們將數(shù)值运嗜、字符串、布爾值稱為原始類型(primitive type)的值悯舟,即它們是最基本的數(shù)據(jù)類型担租,不能再細(xì)分了。而將對象稱為合成類型(complex type)的值抵怎,因?yàn)橐粋€(gè)對象往往是多個(gè)原始類型的值的合成奋救,可以看作是一個(gè)存放各種值的容器。至于undefined和null反惕,一般將它們看成兩個(gè)特殊值尝艘。
對象分為:基本對象({})、數(shù)組姿染、函數(shù)
JS對象可分為狹義對象({})背亥、廣義對象(JS將一切都視為對象)
判斷類型
判斷到底是什么類型,有三種方法:
- typeof運(yùn)算符
- instanceof運(yùn)算符
- Object.prototype.toString方法
1. typeof運(yùn)算符
原始類型
字符串悬赏、數(shù)字狡汉、布爾值分別返回string、number舷嗡、boolean
typeof 123; // number
typeof '123'; // string
typeof true; // boolean
-
對象
函數(shù)轴猎、基本對象、數(shù)組分別返回 function进萄、object捻脖、object
typeof function(){}; // function
typeof {}; // object
typeof []; // object
-
undefinded
typeof undefined; // undefined
可用于檢測一個(gè)未定義的變量而不報(bào)錯(cuò)v
// ReferenceError: v is not defined
typeof v
// "undefined"// 錯(cuò)誤的寫法
if (v) {
// ...
}
// ReferenceError: v is not defined
// 正確的寫法
if (typeof v === "undefined") {
// ...
} null
typeof null; // object
window
在瀏覽器環(huán)境下:typeof window; // object
在其他環(huán)境下:typeof window; // undefined
2. instanceof 運(yùn)算符
后續(xù)待寫
3. Object.prototype.toString
后續(xù)待寫
undefined
undefined類型的值就一個(gè):undefined。表示還未定義中鼠。
應(yīng)用場景
// 變量聲明了可婶,但沒有賦值
var i;
i // undefined
// 調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供援雇,該參數(shù)等于undefined
function f(x) {
return x;
}
f() // undefined
// 對象沒有賦值的屬性
var o = new Object();
o.p // undefined
// 函數(shù)沒有返回值時(shí)矛渴,默認(rèn)返回undefined
function f() {}
f() // undefined
轉(zhuǎn)化為數(shù)字類型
Number(undefined); // NaN
null
null類型的值也就一個(gè):null。表示一個(gè)空對象指針惫搏,也代表一中“無”的狀態(tài)具温,將來可能被賦予任何值。
應(yīng)用場景
//定義準(zhǔn)備保存對象的變量
var obj = null;
obj = [1];
轉(zhuǎn)化為數(shù)字類型
Number(null); // 0
null和undefined是否相等
null == undefined; // true
null === undefined; // false
boolean
boolean有兩種狀態(tài):真(true)筐赔、假(false)铣猩。嚴(yán)格區(qū)分大小寫。
如果JavaScript預(yù)期某個(gè)位置應(yīng)該是布爾值茴丰,會將該位置上現(xiàn)有的值自動轉(zhuǎn)為布爾值达皿。轉(zhuǎn)換規(guī)則是除了下面六個(gè)值被轉(zhuǎn)為false天吓,其他值都視為true。
- undefined
- null
- 0
- NaN
- false
- ' ' 和 " "