這是我學(xué)習(xí)JavaScript的第二篇文章,之前做過(guò)幾年的Java開(kāi)發(fā),發(fā)現(xiàn)JavaScript雖然也是面向?qū)ο蟮恼Z(yǔ)言但是確實(shí)有很多不同之處。就本篇博客,主要學(xué)習(xí)總結(jié)一下最近學(xué)習(xí)到的JavaScript的知識(shí),其中有些是網(wǎng)絡(luò)上的,不過(guò)對(duì)于理解JavaScript,和在工作總是會(huì)很實(shí)用的,所以總結(jié)了下來(lái):
那么就開(kāi)始吧,首先是變量
在JavaScript中變量分為兩種:一種是基本類型,基本類型值在內(nèi)存中占用固定大小的空間,因此被保存在棧內(nèi)存中。從一個(gè)變量向另一個(gè)變量復(fù)制基本類型的值,會(huì)創(chuàng)建這個(gè)值的一個(gè)副本。另一種類型則是引用類型,引用類型的值是對(duì)象,保存在堆內(nèi)存中,對(duì)象的引用保存在棧中。包含引用類型值的變量實(shí)際上包含的并不是對(duì)象本身,而是一個(gè)指向?qū)ο蟮闹羔?,從一個(gè)變量向另一個(gè)變量復(fù)制引用類型的值,復(fù)制的是指針,最終指向同一個(gè)對(duì)象。
那么在實(shí)際的使用中要確定一個(gè)值是那種基本類型的可以使用typeof操作符,而確定一個(gè)值是哪種引用類型則需要使用instanceof 操作符。
基本數(shù)據(jù)類型:undefined、Null、boolean、number和String
引用類型:Object、Array、Date、RegExp、Function、基本包裝類型、單體內(nèi)置對(duì)象(Gloabal、Math)。關(guān)于引用類型各個(gè)類型的詳細(xì)使用,下次再詳細(xì)描述。
JavaScript是面向?qū)ο蟮恼Z(yǔ)言,同樣支持繼承,只是JavaScript支持實(shí)現(xiàn)繼承,不支持接口繼承。
JavaScript是一種非強(qiáng)類型的語(yǔ)言,不需要嚴(yán)格的如同Java、C等語(yǔ)言的聲明類型然后復(fù)制,也一定要賦值聲明類型的值。JavaScript有兩種值類型,所以涉及到兩個(gè)地方復(fù)制,一種就是復(fù)制變量值,另一個(gè)則是方法調(diào)用的時(shí)候存在參數(shù)傳遞賦值。基本類型是值復(fù)制,引用類型復(fù)制是對(duì)象的引用。
作用域
js中沒(méi)有塊作用域的概念。在沒(méi)有var進(jìn)行聲明則會(huì)生成為全局變量污染全局環(huán)境。所以在實(shí)際的使用過(guò)程中,一定要記得var,