1.typeof
typeof運(yùn)算符可以返回一個(gè)值的數(shù)據(jù)類型
原始類型
數(shù)值凰狞、字符串昆婿、布爾值分別返回number镐牺、string、boolean焦读。
函數(shù)
函數(shù)返回function子库。
undefined
undefined返回undefined。
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
function f() {}
typeof f
// "function"
typeof undefined
// "undefined"
除此以外矗晃,其他情況都返回object仑嗅。
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
typeof可以用來(lái)檢查一個(gè)沒(méi)有聲明的變量,而不報(bào)錯(cuò)张症。
v // ReferenceError: v is not defined
typeof v // "undefined"
實(shí)際編程中仓技,這個(gè)特點(diǎn)通常用在判斷語(yǔ)句。
// 錯(cuò)誤的寫法
if (v) { } // ReferenceError: v is not defined
// 正確的寫法
if (typeof v === "undefined") { }
2. instanceof
區(qū)分?jǐn)?shù)組和對(duì)象
var o = {};
var a = [];
o instanceof Array // false
a instanceof Array // true
3. null和undefined
對(duì)于null和undefined俗他,可以大致可以像下面這樣理解脖捻。
null表示空值,即該處的值現(xiàn)在為空兆衅。典型用法是:
作為函數(shù)的參數(shù)地沮,表示該函數(shù)的參數(shù)是一個(gè)沒(méi)有任何內(nèi)容的對(duì)象。
作為對(duì)象原型鏈的終點(diǎn)羡亩。
undefined表示不存在值摩疑,就是此處目前不存在任何值。典型用法是:
變量被聲明了畏铆,但沒(méi)有賦值時(shí)雷袋,就等于undefined。
調(diào)用函數(shù)時(shí)辞居,應(yīng)該提供的參數(shù)沒(méi)有提供片排,該參數(shù)等于undefined寨腔。
對(duì)象沒(méi)有賦值的屬性,該屬性的值為undefined率寡。
函數(shù)沒(méi)有返回值時(shí),默認(rèn)返回undefined倚搬。
var i;
i // undefined
function f(x){console.log(x)}
f() // undefined
var o = new Object();
o.p // undefined
var x = f();
x // undefined
4. Boolean
布爾值代表“真”和“假”兩個(gè)狀態(tài)冶共。“真”用關(guān)鍵字true表示每界,“假”用關(guān)鍵字false表示捅僵。布爾值只有這兩個(gè)值。
下列運(yùn)算符會(huì)返回布爾值:
- 兩元邏輯運(yùn)算符: && (And)眨层,|| (Or)
- 前置邏輯運(yùn)算符: ! (Not)
- 相等運(yùn)算符:===庙楚,!==,==趴樱,!=
- 比較運(yùn)算符:>馒闷,>=,<叁征,<=
轉(zhuǎn)換為false的類型
如果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
- ""(空字符串)
注意 :空數(shù)組([])和空對(duì)象({})對(duì)應(yīng)的布爾值啤呼,都是true
if ([]) {
console.log(true);
}
// true
if ({}) {
console.log(true);
}
// true
5. Infinity 表示無(wú)窮大
1/0 //Infinity
6. NaN
NaN含義是Not a Number卧秘,表示非數(shù)字,NaN和任何值都不相等官扣,包括自己
NaN == NaN; //false
parseInt('abc'); //NaN
7. 數(shù)值轉(zhuǎn)換
有三個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值
- Number()
- parseInt()
- parseFloat()
parseInt parseFloat
- 忽略字符串前面的空白字符翅敌,找到第一個(gè)非空白字符
- 如果第一個(gè)字符不是
-
或者數(shù)字返回NaN
- 如果是繼續(xù)解析,直到非數(shù)值模式為止
-
0
開(kāi)頭會(huì)當(dāng)做八進(jìn)制醇锚,0x
開(kāi)頭會(huì)當(dāng)做十六進(jìn)制哼御,但是可以指定第二個(gè)參數(shù)指定基數(shù)
parseInt('blue'); //NaN
parseInt('-23ABS'); // -23
parseInt('0xf1'); // 241
parseInt('101', 2); // 5
8.Object
對(duì)象,就是一種無(wú)序的數(shù)據(jù)集合焊唬,由若干個(gè)“鍵值對(duì)”(key-value)構(gòu)成恋昼。key我們稱為對(duì)象的屬性,value可以是任何JavaScript類型赶促,甚至可以是對(duì)象
var obj = {
name: 'jirengu',
age: 2
};
object的屬性讀取有兩種方式
obj.name;
obj['name'];