這是我學(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中變量分為兩種:一種是基本類(lèi)型,基本類(lèi)型值在內(nèi)存中占用固定大小的空間,因此被保存在棧內(nèi)存中。從一個(gè)變量向另一個(gè)變量復(fù)制基本類(lèi)型的值,會(huì)創(chuàng)建這個(gè)值的一個(gè)副本。另一種類(lèi)型則是引用類(lèi)型,引用類(lèi)型的值是對(duì)象,保存在堆內(nèi)存中,對(duì)象的引用保存在棧中。包含引用類(lèi)型值的變量實(shí)際上包含的并不是對(duì)象本身,而是一個(gè)指向?qū)ο蟮闹羔?,從一個(gè)變量向另一個(gè)變量復(fù)制引用類(lèi)型的值,復(fù)制的是指針,最終指向同一個(gè)對(duì)象。

那么在實(shí)際的使用中要確定一個(gè)值是那種基本類(lèi)型的可以使用typeof操作符,而確定一個(gè)值是哪種引用類(lèi)型則需要使用instanceof 操作符。

基本數(shù)據(jù)類(lèi)型:undefined、Null、boolean、number和String

引用類(lèi)型:Object、Array、Date、RegExp、Function、基本包裝類(lèi)型、單體內(nèi)置對(duì)象(Gloabal、Math)。關(guān)于引用類(lèi)型各個(gè)類(lèi)型的詳細(xì)使用,下次再詳細(xì)描述。

JavaScript是面向?qū)ο蟮恼Z(yǔ)言,同樣支持繼承,只是JavaScript支持實(shí)現(xiàn)繼承,不支持接口繼承。

JavaScript是一種非強(qiáng)類(lèi)型的語(yǔ)言,不需要嚴(yán)格的如同Java、C等語(yǔ)言的聲明類(lèi)型然后復(fù)制,也一定要賦值聲明類(lèi)型的值。JavaScript有兩種值類(lèi)型,所以涉及到兩個(gè)地方復(fù)制,一種就是復(fù)制變量值,另一個(gè)則是方法調(diào)用的時(shí)候存在參數(shù)傳遞賦值?;绢?lèi)型是值復(fù)制,引用類(lèi)型復(fù)制是對(duì)象的引用。

 

作用域

js中沒(méi)有塊作用域的概念。在沒(méi)有var進(jìn)行聲明則會(huì)生成為全局變量污染全局環(huán)境。所以在實(shí)際的使用過(guò)程中,一定要記得var,