Q:
js數(shù)據(jù)類型?
A:
原始類型:number续室、string栋烤、boolean、特殊類型(null&undefined)
// 不區(qū)分整型和浮點(diǎn)數(shù)值
var a = 1; // number類型
var b = 1.1; // number類型
// ""和''均可構(gòu)成字符串
var c = "hello"; // 雙引號內(nèi)文本構(gòu)成字符串
var d = 'world'; // 單引號內(nèi)文本構(gòu)成字符串
// true和false為布爾值
var e = true;
var f = false;
// null和undefined均為特殊類型
var g = null;
var h = undefined;
對象類型:array挺狰、function&object
Q:
==和===的區(qū)別明郭?
A:
原始類型值的比較是值的比較:
它們的值相等時它們就相等(==)买窟;
它們的值和類型都相等時它們就恒等(===)。
console.log( false == 0 ) //true
console.log( false === 0 ) //false
部分值會在布爾值轉(zhuǎn)換的時候被轉(zhuǎn)換為false薯定,但是并不意味著它們和false相等
undefined
null
0
-0
NaN
"" // 空字符串
console.log( undefined == true ) //false
console.log( undefined == false ) //false
console.log( undefined == null ) //true
console.log( undefined === null ) //false
console.log( null == false ) //false
console.log( null == true ) //false
console.log( "" == false ) //true
console.log( "" == true ) //false
console.log( 0 == false ) //true
console.log( 0 == true ) //false
console.log( -0 == false ) //true
console.log( -0 == true ) //false
Q:
null和undefined的區(qū)別?
A:
null:正常的或在意料之中的值的空缺
undefined:出乎意料的或類似錯誤的值的空缺
Q:
Infinity和NaN
A:
Infinity:表示無限大始绍,超過JS的number所能夠表示的最大值。
NaN:表示not a number话侄,無法計(jì)算的結(jié)果亏推。
// NaN與任何值都不相等,包括它自身
console.log( NaN == NaN ) //false
// 識別NaN的方法
console.log( isNaN(NaN) ) //true
Q:
為什么兩個空數(shù)組不相等年堆?
var a = [], b = [];
console.log( a == b ); //false
A:
對象類型的比較和原始類型不同(原始類型見上Q)吞杭,對象的比較并非值的比較,而是引用的比較:
對象:包含同樣的屬性及相同的值的兩個對象,它們也是不相等的
數(shù)組:各個索引元素完全相等的兩個數(shù)組变丧,它們也是不相等的
var a = { n : 1 }, b = { n : 1 }; //同樣屬性&相同的值
console.log(a == b); //false
var c = [], d = []; //單獨(dú)的空數(shù)組
console.log( c == d ); //false
對象類型一般我們稱為引用類型芽狗,區(qū)別于基本類型,對于對象值的使用我們都是采用了引用的方式--reference痒蓬,所以只有在引用對象為同一對象時童擎,它們的值才會相等
var a = []; //定義a來引用一個空的數(shù)組
var b = a; //定義b來引用同一個數(shù)組
console.log(a == b); //true
b[0] = 1; //調(diào)用變量b來修改數(shù)組
console.log(a[0]); //1,因?yàn)橐玫氖峭粋€數(shù)組,所以a也會改變