數(shù)據(jù)類型
JavaScript數(shù)據(jù)類型分為兩類:
原始類型(primitive type):數(shù)字板熊、字符串痘儡、布爾值
* 特殊原始值:null(空)、undefined(未定義)
對(duì)象類型(object type):
對(duì)象是屬性的集合
null與undefined
> 其均表示"值的空缺",兩者往往可以互換
> null == undefined 返回 true , null === undefined 返回false
> 都不包含任何屬性和方法
> 使用“.” 和 “[]” 來(lái)存取這兩個(gè)值的成員或方法都會(huì)產(chǎn)生類型錯(cuò)誤
null
> null 是javascript關(guān)鍵字辞居,表示一個(gè)特殊值右锨,“空值”辫封,
> typeof null = “object”
> null是一個(gè)特殊的對(duì)象值厉熟,含義是“非對(duì)象”,可表示數(shù)字溉潭、字符串和對(duì)象是“無(wú)值”
undefined
> undefined是預(yù)定義的全局變量(不是關(guān)鍵字)净响,其值為“未定義”
> 在ECMAScript 3中,undefined是可讀/可寫(xiě)的變量喳瓣,可給它賦任意值馋贤,在ECMAScript 5中修改為只讀,
> typeof undefined = "undefined",表明該值是這個(gè)類型的唯一成員
全局對(duì)象
全局對(duì)象的屬性是全局定義的符號(hào)畏陕,JavaScript程序可以直接使用
全局屬性:比如undefined配乓,Infinity,NaN
全局函數(shù):比如isNaN(),parseInt()犹芹,eval()
構(gòu)造函數(shù):比如Date()崎页,RegExp(),String()腰埂,Object()飒焦,Array()
全局對(duì)象:比如Math、JSON
原始值與對(duì)象引用
原始值:undefined屿笼、unll牺荠、布爾值、數(shù)字驴一、字符串
* 不可更改
* 原始值的比較是值的比較
對(duì)象(又稱引用類型):數(shù)組休雌、函數(shù)
* 對(duì)象的比較并非值的比較,即使兩個(gè)對(duì)象包含同樣的屬性及相同的值肝断,他們也是不相同的挑辆,各個(gè)索引元素完全相同的兩個(gè)數(shù)組也不相等
* 除了null 和 undefined之外的任何值都具有toString()方法,該方法的執(zhí)行結(jié)果通常和String()方法的返回結(jié)果一致孝情。
對(duì)象 --> 字符串 : .toString();
對(duì)象 --> 數(shù)字: .valueOf();
函數(shù)作用于
JavaScript 的函數(shù)作用域是指在函數(shù)內(nèi)聲明的所有變量在函數(shù)體內(nèi)始終是可見(jiàn)的,這意味著在聲明之前甚至已經(jīng)可用洒嗤。
function test1(o) {
var i = 0;
if( typeof o === "object") {
var j = 0;
for(var k = 0; k < 10; k++) {
console.log(k); //0~9
}
console.log("k:"+k); //k:10
}
console.log("j:"+j); //j:0
}
var scope = "global";
function test2() {
console.log(scope); //undefined
var scope = "local";
console.log(scope); //local
}