|
一、var和let var已經(jīng)在JavaScript中存在很長一段時間了,但是它存在了一些不足的地方,接下來我們就來看看吧 首先var存在變量提升,這是怎么一回事呢,我們看下面代碼
為什么是它呢,是因為變量a提升到前面去了,所以輸出了這個結(jié)果 接下來我們再看let
初始化無法訪問到 a let是不是變量聲明很好,這是ES6中為了使我們的編程更加的規(guī)范而提出的。變量的使用在聲明之后更加的規(guī)范 如果存在于塊級作用域中l(wèi),接下來看代碼
在上面的塊中我們的let存在于里面,在外層我們是讀取不到的 那我們的var怎么樣,看下面
接下來我們就要說說let是存在一個“暫時性死區(qū)”的,就是說在變量使用let聲明的話必須是在聲明之后調(diào)用而且必須是在當(dāng)前的塊中才可以的,不然就會出現(xiàn)未定義。 而且我們的let是不能進(jìn)行重復(fù)shengsheng聲明的,不然也是會報錯的。當(dāng)然var就不會出現(xiàn)這個問題了。
好了,以上就介紹的差不多了,需深刻領(lǐng)會的必須自己進(jìn)行實踐才可以的 二、const const和我們的let是一樣的不能進(jìn)行重復(fù)聲明,也存在“暫時性死區(qū)”,而且const的話就相當(dāng)于C語言中定義的一個常數(shù)而不能進(jìn)行改變,并且const聲明后不賦值就會報錯的。 如果const是一個數(shù)組或者是一個對象,那么可以向里面添加屬性或者時內(nèi)容的,接下來我們看下面的代碼了。
好了,我們的const介紹到這里吧。
三、function和class 為什么我把他們連到一起來說,因為我們的class實際上就是我們的function構(gòu)成的 這里還要說一下我們的function的聲明實際上需要往好的方式來進(jìn)行寫的,為什么這么來說? 我們需要將function聲明的進(jìn)行如下方式來書寫
為什么我們這么來寫呢,因為這是在塊級作用域中來進(jìn)行書寫的,讓let給一個聲明就不會出現(xiàn)變量的提升。 當(dāng)然現(xiàn)在由于我們的瀏覽器和編譯環(huán)境(這里指的node等等)的問題他們的規(guī)范是不一樣的,有些聲明的函數(shù)直接是當(dāng)做var,或者是let來的。所以我們盡量不要在塊區(qū)域來聲明函數(shù),盡量在全局 來進(jìn)行聲明,如果要聲明就是上面的那種方式了。 好了接下來說說我們的class,直接看代碼吧
constructor就是我們的構(gòu)造器,它是默認(rèn)存在的,那么this的指向呢,當(dāng)然是我們的Person了。接下來還有下面的方式
里面新增加的函數(shù)直接書寫成上面的方式即可,還有靜態(tài)strict的書寫方式,這里我就不在舉例了??戳松厦娴拇a,我相信這種類的方式是對我們以后代碼的編寫是很有幫助的。 說到這里我想到了函數(shù)里面的prototype,實際上我們的類就是居于這個原理來實現(xiàn)的,我們還是來看看代碼吧
這個有點像原型鏈調(diào)用的方式,還有繼承的問題,這里就不做過多的闡述了。具體的需要自己去實踐才可以出真理的吧。 四、import 靜態(tài)的 看下官方的語法: import defaultExport from "module-name"; |
|
|