標識符
標識符就是變量、對象、屬性的名字。
標識符規(guī)范
- 第一個字符必須是字母、下劃線或美元符$
- 其他字符可以是字母、數(shù)字、下劃線或美元符$
- 不能把關(guān)鍵字、保留字、true、false、null、Infinity、NaN、Undefined用做標識符
數(shù)據(jù)類型
- 數(shù)字(Number):整數(shù)和小數(shù)
- 字符串(String): 字符組成的文本
- 布爾值(Boolean): true和false
- undefined : 表示“未定義”或不存在,即由于目前沒有定義,所以此處暫時沒有任何值
- null :表示無值,即此處的值就是“無”的狀態(tài)。
- 對象(Object): 各種值的集合
- Symbol :
通常,我們將數(shù)值、字符串、布爾值稱為原始類型(primitive type)的值,即它們是最基本的數(shù)據(jù)類型,不能再細分了。而將對象稱為合成類型(complex type)的值,因為一個對象往往是多個原始類型的值的合成,可以看作是一個存放各種值的容器。至于undefined和null,一般將它們看成兩個特殊值。
對象分為:基本對象({})、數(shù)組、函數(shù)
JS對象可分為狹義對象({})、廣義對象(JS將一切都視為對象)
判斷類型
判斷到底是什么類型,有三種方法:
- typeof運算符
- instanceof運算符
- Object.prototype.toString方法
1. typeof運算符
原始類型
字符串、數(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
可用于檢測一個未定義的變量而不報錯v
// ReferenceError: v is not defined
typeof v
// "undefined"// 錯誤的寫法
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 運算符
后續(xù)待寫
3. Object.prototype.toString
后續(xù)待寫
undefined
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
轉(zhuǎn)化為數(shù)字類型
Number(undefined); // NaN
null
null類型的值也就一個:null。表示一個空對象指針,也代表一中“無”的狀態(tài),將來可能被賦予任何值。
應用場景
//定義準備保存對象的變量
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)。嚴格區(qū)分大小寫。
如果JavaScript預期某個位置應該是布爾值,會將該位置上現(xiàn)有的值自動轉(zhuǎn)為布爾值。轉(zhuǎn)換規(guī)則是除了下面六個值被轉(zhuǎn)為false,其他值都視為true。
- undefined
- null
- 0
- NaN
- false
- ' ' 和 " "