第三章 基本概念(數(shù)據(jù)類(lèi)型)


一绰精、變量定義

ECMAScript的變量是松散類(lèi)型的级野,所謂的松散類(lèi)型班眯,就是可以用來(lái)保存任何類(lèi)型的數(shù)據(jù)蕊蝗,例如:

var message = "Hello World";?

var num = 10;

當(dāng)然狮辽,我們也可以不賦予初始值一也,例如:var data巢寡; 這樣,我們便定義data椰苟,但是data并未被初始化抑月,因此會(huì)被默認(rèn)保存一個(gè)特殊的值 —— undefined。

用var操作符定義的變量將成為定義改變量的作用域的局部變量舆蝴。也就是說(shuō)如果再函數(shù)中使用var定義一個(gè)變量谦絮,那么這個(gè)變量在函數(shù)退出后便會(huì)被銷(xiāo)毀。省略var操作符時(shí)洁仗,變量就成了全局變量层皱,當(dāng)然var也可以定義全局變量,但是不推薦甚至禁止創(chuàng)建全局變量赠潦。

在ES6中叫胖,有了let和const之后,便可以不再使用var操作符了她奥,理由是var會(huì)造成變量提升瓮增,而且var能夠重復(fù)定義相同變量,會(huì)造成混亂方淤,let和const能避免這個(gè)問(wèn)題钉赁。


二蹄殃、數(shù)據(jù)類(lèi)型

基本數(shù)據(jù)類(lèi)型:Undefined携茂、Null、Boolean诅岩、String讳苦、Number(在ES6中新增了另一種基本數(shù)據(jù)類(lèi)型 —— Symbol)

復(fù)雜數(shù)據(jù)類(lèi)型:Object


三、數(shù)據(jù)類(lèi)型的檢測(cè)

1. typeof:不能檢測(cè)到null類(lèi)型吩谦,typeof鸳谜;

2. null會(huì)返回"object";

3. instanceof:用來(lái)判斷A是否是B的實(shí)例式廷,表達(dá)式為A instanceof B咐扭,但是無(wú)法判斷數(shù)組是Array還是Object(雖然數(shù)組也是對(duì)象),例如[] instanceof Array返回true滑废,而[] instanceof Object 也是返回true蝗肪。可以結(jié)合ES5新增的Array.isArray()方法判斷具體是數(shù)組還是對(duì)象蠕趁;

4. constructor:不能檢測(cè)到null和undefined薛闪,因?yàn)檫@兩個(gè)是無(wú)效的對(duì)象,并且constructor是不穩(wěn)定的俺陋,這個(gè)主要體現(xiàn)在自定義對(duì)象上豁延,當(dāng)開(kāi)發(fā)者重寫(xiě) prototype 后昙篙,原有的 constructor 引用會(huì)丟失,constructor會(huì)默認(rèn)為 Object诱咏;

5. toString:比較好的判斷方法苔可,Object的原型方法,調(diào)用該方法胰苏,默認(rèn)返回當(dāng)前對(duì)象的 [class] 硕蛹。這是一個(gè)內(nèi)部屬性,其格式為 [object xxx] 硕并,其中 xxx就是對(duì)象的類(lèi)型法焰。例如:Object.prototype.toString.call(1)返回[object Number]


四、null和undefined

當(dāng)一個(gè)變量被聲明時(shí)倔毙,這個(gè)變量的默認(rèn)值就是undefined埃仪,而當(dāng)一個(gè)變量為null時(shí),則代表著這個(gè)變量的值是一個(gè)空指針對(duì)象陕赃。簡(jiǎn)單來(lái)說(shuō)就是卵蛉,聲明但未賦值,就是undefined么库,null則是有值傻丝,值為null(空指針)


五、Boolean

Boolean只有兩個(gè)字面值:true和false诉儒,這兩個(gè)數(shù)值與數(shù)字值不是一回事葡缰,因此true不一定等于1,false也不一定等于0.可以這么理解忱反,存在為true泛释,不存在為false,成立為true温算,不成立為false怜校。要將某個(gè)非布爾值轉(zhuǎn)化成布爾值,可以用Boolean()方法注竿。


六茄茁、Number

最基本的數(shù)值字面量格式為十進(jìn)制整數(shù),就是我們常用的1巩割,2裙顽,3,4喂分,5等等锦庸;除此之外,還可以用八進(jìn)制或十六進(jìn)制表示蒲祈,但是八進(jìn)制在嚴(yán)格模式(use stric)下無(wú)效甘萧,算術(shù)計(jì)算時(shí)萝嘁,都將轉(zhuǎn)化成十進(jìn)制進(jìn)行運(yùn)算。

浮點(diǎn)數(shù)的精度最高達(dá)到17位扬卷,但是在運(yùn)算時(shí)其精度遠(yuǎn)遠(yuǎn)不如整數(shù)牙言,例如:0.1 + 0.2 = 0.300000000000000004。因此怪得,永遠(yuǎn)不要測(cè)試某個(gè)特定浮點(diǎn)數(shù)值咱枉,當(dāng)然這并非ECMAScript獨(dú)有的問(wèn)題,這是基于IEEE754數(shù)值的浮點(diǎn)計(jì)算的通病徒恋。

NaN是一個(gè)特殊的數(shù)值(Not a Number)蚕断,這個(gè)數(shù)值用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況。例如0除以0都會(huì)導(dǎo)致錯(cuò)誤入挣,此時(shí)會(huì)返回NaN亿乳。

任何涉及NaN的操作都會(huì)返回NaN;NaN與任何數(shù)值都不相等径筏;包括它自己本身(NaN == NaN返回false)葛假;實(shí)際上,只有0除以0才會(huì)返回NaN滋恬,正數(shù)除以0返回Infinity(正無(wú)窮)聊训,負(fù)數(shù)除以0返回-Infinity(負(fù)無(wú)窮);isNaN()方法能檢測(cè)變量是否不是數(shù)值恢氯,即可以用來(lái)判斷變量是否能轉(zhuǎn)化成數(shù)字带斑,如isNaN('blue')返回true,isNaN(true)返回false

將其他非數(shù)值類(lèi)型轉(zhuǎn)化為數(shù)值類(lèi)型的方法有三種:Number()酿雪、parseInt()遏暴、parseFloat()侄刽,Number()可以用于任何數(shù)據(jù)類(lèi)型指黎,而另外兩個(gè)則專門(mén)用于把字符串轉(zhuǎn)換成數(shù)值。這三個(gè)函數(shù)對(duì)于相同的輸入會(huì)有不同的結(jié)果州丹,所以轉(zhuǎn)換時(shí)請(qǐng)選擇正確的方法去使用醋安。


七、String

字符串可由英文的引號(hào)('')和雙引號(hào)("")表示墓毒,以什么符號(hào)開(kāi)始吓揪,就以什么符號(hào)結(jié)束,如以雙引號(hào)開(kāi)始就以雙引號(hào)結(jié)束("Hello World")所计。

有一些特殊的字符串顯示需要轉(zhuǎn)義柠辞,例如該字符串中含有單引號(hào)則需要加上斜杠,例如:'\'Hello World\''

ECMAScript中的字符串是不可變的主胧,也就是說(shuō)叭首,字符串一旦創(chuàng)建习勤,它們的值就不能再改變,要改變焙格,首先要銷(xiāo)毀原來(lái)的字符串图毕,然后再用另一個(gè)字符串填充該變量

要把一個(gè)值轉(zhuǎn)換成字符串的方法有兩種,一種是使用toString()方法眷唉,另一種予颤,則是把該值與一對(duì)雙引號(hào)或單引號(hào)加在一起(10 + "3" = "103")


八、Object

ECMAScript中的對(duì)象其實(shí)就是一組數(shù)據(jù)和功能的集合冬阳,對(duì)象可以通過(guò)執(zhí)行new操作符后跟要?jiǎng)?chuàng)建的對(duì)象類(lèi)型的名稱來(lái)創(chuàng)建蛤虐,如:var o = new Object(),圓括號(hào)可以省略但是不推薦肝陪;ECMAScript中Object類(lèi)型是所有它的實(shí)例的基礎(chǔ)笆焰,換句話說(shuō),Object類(lèi)型所具有的任何屬性和方法同樣也存在于更具體的對(duì)象中见坑。

Object每個(gè)實(shí)例都具有下列的屬性和方法:

constructor:保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)嚷掠。

hasOwnProperty(propertyName):用于檢查給定的屬性在當(dāng)前的對(duì)象實(shí)例中(而不是在實(shí)例原型中)是否存在

isProptoTypeOf(object):用于檢查傳入的對(duì)象是否是傳入對(duì)象的原型。

propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語(yǔ)句荞驴。

toLocaleString():返回對(duì)象的字符串表示不皆,該字符串與執(zhí)行環(huán)境地區(qū)相對(duì)應(yīng)。

toString():返回對(duì)象的字符串表示熊楼。

valueOf():返回對(duì)象的字符串霹娄、數(shù)值或布爾值表示,通常與toString()的返回值相同鲫骗。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末犬耻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子执泰,更是在濱河造成了極大的恐慌枕磁,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件术吝,死亡現(xiàn)場(chǎng)離奇詭異计济,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)排苍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)沦寂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人淘衙,你說(shuō)我怎么就攤上這事传藏。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵毯侦,是天一觀的道長(zhǎng)西壮。 經(jīng)常有香客問(wèn)我,道長(zhǎng)叫惊,這世上最難降的妖魔是什么款青? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮霍狰,結(jié)果婚禮上抡草,老公的妹妹穿的比我還像新娘。我一直安慰自己蔗坯,他們只是感情好康震,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著宾濒,像睡著了一般腿短。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绘梦,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天橘忱,我揣著相機(jī)與錄音,去河邊找鬼卸奉。 笑死钝诚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榄棵。 我是一名探鬼主播凝颇,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疹鳄!你這毒婦竟也來(lái)了拧略?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瘪弓,失蹤者是張志新(化名)和其女友劉穎垫蛆,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體杠茬,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡月褥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年弛随,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓢喉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舀透,死狀恐怖栓票,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤走贪,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布佛猛,位于F島的核電站,受9級(jí)特大地震影響坠狡,放射性物質(zhì)發(fā)生泄漏继找。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一逃沿、第九天 我趴在偏房一處隱蔽的房頂上張望婴渡。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至揽乱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背臼予。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啃沪,地道東北人瘟栖。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谅阿,于是被迫代替她去往敵國(guó)和親半哟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容