EMCAScript6(ES6)是最新的Javascript,它包含了一些很棒的新特性。這些特性擁有不同程度的復(fù)雜性,對于簡單的腳本和復(fù)雜的應(yīng)用程序都非常的有用。\x0d\x0a\x0d\x0a增加的新特性:\x0d\x0a\x0d\x0a1.箭頭操作符\x0d\x0a 如果你會C#或者Java,你肯定知道lambda表達(dá)式,ES6中新增的箭頭操作符=便有異曲同工之妙。它簡化了函數(shù)的書寫。操作符左邊為輸入的參數(shù),而右邊則是進行的操作以及返回的值Inputs=outputs。\x0d\x0a 我們知道在JS中回調(diào)是經(jīng)常的事,而一般回調(diào)又以匿名函數(shù)的形式出現(xiàn),每次都需要寫一個function,甚是繁瑣。當(dāng)引入箭頭操作符后可以方便地寫回調(diào)了。\x0d\x0a\x0d\x0a2.類的支持\x0d\x0a ES6中添加了對類的支持,引入了class關(guān)鍵字(其實class在JavaScript中一直是保留字,目的就是考慮到可能在以后的新版本中會用到,現(xiàn)在終于派上用場了)。JS本身就是面向?qū)ο蟮模珽S6中提供的類實際上只是JS原型模式的包裝。現(xiàn)在提供原生的class支持后,對象的創(chuàng)建,繼承更加直觀了,并且父類方法的調(diào)用,實例化,靜態(tài)方法和構(gòu)造函數(shù)等概念都更加形象化。\x0d\x0a\x0d\x0a3.增強的對象字面量\x0d\x0a 對象字面量被增強了,寫法更加簡潔與靈活,同時在定義對象的時候能夠做的事情更多了。具體表現(xiàn)在:\x0d\x0a(1).可以在對象字面量里面定義原型\x0d\x0a(2).定義方法可以不用function關(guān)鍵字\x0d\x0a(3).直接調(diào)用父類方法\x0d\x0a\x0d\x0a4.字符串模板\x0d\x0a 字符串模板相對簡單易懂些。ES6中允許使用反引號 ` 來創(chuàng)建字符串,此種方法創(chuàng)建的字符串里面可以包含由美元符號加花括號包裹的變量${vraible}。如果你使用過像C#等后端強類型語言的話,對此功能應(yīng)該不會陌生。\x0d\x0a\x0d\x0a5.解構(gòu)\x0d\x0a 自動解析數(shù)組或?qū)ο笾械闹怠1热缛粢粋€函數(shù)要返回多個值,常規(guī)的做法是返回一個對象,將每個值做為這個對象的屬性返回。但在ES6中,利用解構(gòu)這一特性,可以直接返回一個數(shù)組,然后數(shù)組中的值會自動被解析到對應(yīng)接收該值的變量中。\x0d\x0a\x0d\x0a6.參數(shù)默認(rèn)值,不定參數(shù),拓展參數(shù)\x0d\x0a(1).默認(rèn)參數(shù)值\x0d\x0a 現(xiàn)在可以在定義函數(shù)的時候指定參數(shù)的默認(rèn)值了,而不用像以前那樣通過邏輯或操作符來達(dá)到目的了。\x0d\x0a(2).不定參數(shù)\x0d\x0a 不定參數(shù)是在函數(shù)中使用命名參數(shù)同時接收不定數(shù)量的未命名參數(shù)。這只是一種語法糖,在以前的JavaScript代碼中我們可以通過arguments變量來達(dá)到這一目的。不定參數(shù)的格式是三個句點后跟代表所有不定參數(shù)的變量名。比如下面這個例子中,?x代表了所有傳入add函數(shù)的參數(shù).\x0d\x0a(3).拓展參數(shù)\x0d\x0a 拓展參數(shù)則是另一種形式的語法糖,它允許傳遞數(shù)組或者類數(shù)組直接做為函數(shù)的參數(shù)而不用通過apply。\x0d\x0a\x0d\x0a6.let與const 關(guān)鍵字\x0d\x0a 可以把let看成var,只是它定義的變量被限定在了特定范圍內(nèi)才能使用,而離開這個范圍則無效。const則很直觀,用來定義常量,即無法被更改值的變量。\x0d\x0a\x0d\x0a7.for of 值遍歷\x0d\x0a 我們都知道for in 循環(huán)用于遍歷數(shù)組,類數(shù)組或?qū)ο螅珽S6中新引入的for of循環(huán)功能相似,不同的是每次循環(huán)它提供的不是序號而是值。\x0d\x0a8.模塊\x0d\x0a 在ES6標(biāo)準(zhǔn)中,JavaScript原生支持module了。這種將JS代碼分割成不同功能的小塊進行模塊化的概念是在一些三方規(guī)范中流行起來的,比如CommonJS和AMD模式。\x0d\x0a\x0d\x0a9.Map,Set 和 WeakMap,WeakSet\x0d\x0a 這些是新加的集合類型,提供了更加方便的獲取屬性值的方法,不用像以前一樣用hasOwnProperty來檢查某個屬性是屬于原型鏈上的呢還是當(dāng)前對象的。同時,在進行屬性值添加與獲取時有專門的get,set方法。\x0d\x0a\x0d\x0a10.Proxies\x0d\x0a Proxy可以監(jiān)聽對象身上發(fā)生了什么事情,并在這些事情發(fā)生后執(zhí)行一些相應(yīng)的操作。一下子讓我們對一個對象有了很強的追蹤能力,同時在數(shù)據(jù)綁定方面也很有用處。\x0d\x0a\x0d\x0a11.Symbols\x0d\x0a 我們知道對象其實是鍵值對的集合,而鍵通常來說是字符串。而現(xiàn)在除了字符串外,我們還可以用symbol這種值來做為對象的鍵。Symbol是一種基本類型,像數(shù)字,字符串還有布爾一樣,它不是一個對象。Symbol 通過調(diào)用symbol函數(shù)產(chǎn)生,它接收一個可選的名字參數(shù),該函數(shù)返回的symbol是唯一的。之后就可以用這個返回值做為對象的鍵了。Symbol還可以用來創(chuàng)建私有屬性,外部無法直接訪問由symbol做為鍵的屬性值。\x0d\x0a\x0d\x0a12.Math,Number,String,Object 的新API\x0d\x0a 對Math,Number,String還有Object等添加了許多新的API。下面代碼同樣來自es6features,對這些新API進行了簡單展示。\x0d\x0a\x0d\x0a13.Promises\x0d\x0a Promises是處理異步操作的一種模式,之前在很多三方庫中有實現(xiàn),比如jQuery的deferred 對象。當(dāng)你發(fā)起一個異步請求,并綁定了.when(), .done()等事件處理程序時,其實就是在應(yīng)用promise模式。

創(chuàng)新互聯(lián)專注于白水網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供白水營銷型網(wǎng)站建設(shè),白水網(wǎng)站制作、白水網(wǎng)頁設(shè)計、白水網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造白水網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供白水網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
網(wǎng)址: Download | Node.js (nodejs.org)
1、至此Node.js已經(jīng)安裝完成,可以先進行下簡單的測試安裝是否成功了,后面還要進行環(huán)境配;
2、在鍵盤按下【win+R】鍵,輸入cmd,然后回車,打開cmd窗口;
3、安裝完后的目錄如下圖所示;
4、此處說明下:新版的Node.js已自帶npm,安裝Node.js時會一起安裝,npm的作用就是對Node.js依賴的包進行管理,也可以理解為用來安裝/卸載Node.js需要裝的東西。
5、輸入 node -v 顯示node.js的版本,說明node安裝成功;輸入 npm -v 顯示npm`顯示npm的版本,說明npm安裝成功。
1、說明:這里的環(huán)境配置主要配置的是npm安裝的全局模塊所在的路徑,以及緩存cache的路徑,之所以要配置,是因為以后在執(zhí)行類似:npm install express [-g] (后面的可選參數(shù)-g,g代表global全局安裝的意思)的安裝語句時,會將安裝的模塊安裝到【C:\Users\用戶名\AppData\Roaming\npm】路徑中,占C盤空間
2、例如:我希望將全模塊所在路徑和緩存路徑放在我node.js安裝的文件夾中,則在我安裝的文件夾【D:\Develop\nodejs】下創(chuàng)建兩個文件夾【node_global】及【node_cache】。
3、執(zhí)行命令
npm config set prefix "D:\Develop\nodejs\node_global"
npm config set cache "D:\Develop\nodejs\node_cache"
1、接下來設(shè)置環(huán)境變量,關(guān)閉cmd窗口,“我的電腦”-右鍵-“屬性”-“高級系統(tǒng)設(shè)置”-“高級”-“環(huán)境變量”;
2、進入環(huán)境變量對話框,在【系統(tǒng)變量】下新建【NODE_PATH】,輸入【D:\Develop\nodejs\node_global\node_modules】,將【用戶變量】下的【Path】修改為【D:\Develop\nodejs\node_global】。
1、配置完后,安裝個module測試下,我們就安裝最常用的express模塊,打開cmd窗口
2、輸入如下命令進行模塊的全局安裝:
npm install express -g # -g是全局安裝的意思
沒有就沒有了唄,也未必是換內(nèi)核了,判斷瀏覽器使用navigator.userAgent比較靠譜
1、避免全局變量,因為全局變量容易發(fā)生名稱上的沖突,可維護性不好。
a,使用命名空間
b,使用閉包
c,在函數(shù)內(nèi)部使用var聲明
2、編寫可維護的代碼
a.可讀性
b.連續(xù)性
c.預(yù)見性
d.看起來是一個人寫的
e.有文檔
3、不要擴展內(nèi)建的原型
擴展原型的構(gòu)造函數(shù),可以提供一些很強大的功能,但是有時候他太強大了。
有時候你會去擴展Object(),Array(),Fucntion()的原型方法,這樣會導(dǎo)致可維護性的問題,因為這會讓你的代碼的移植性變差。其他的開發(fā)人員使用你的代碼的時候,可能只需要原生的方法,并不需要額外的功能。
另外,你添加進去的方法,如果在循環(huán)的時候沒有使用hasOwnProperty方法就會被遍歷出來,這會讓人很迷惑。
所以,最好還是不要擴展基本的對象。除非是下面的情況:
a.你確定在將來根據(jù)ECMAScript規(guī)范,瀏覽器會添加相應(yīng)的原型方法,那么是可以的,你只不過是提前實現(xiàn)了這個功能。
b.你確定的你要實現(xiàn)的方法不存在–或許有時候在代碼的其他的地方實現(xiàn)了,或者有的瀏覽器支持,這都是不行的。
c.有非常清晰的文檔,并且與團隊成員溝通過
4、避免隱藏的類型轉(zhuǎn)換
Javascript在你比較兩個變量的時候會進行類型的轉(zhuǎn)換,這就是為什么 false == 0或者地" == 0會返回true。
為了避免這種隱藏的類型轉(zhuǎn)換帶來的迷惑,最好使用===或者!==操作符來比較:
5、避免使用eval()
如果在你的代碼中使用eval(),那么要記住地eval() is evil地。這個方法會將傳入的字符串當(dāng)做js代碼來執(zhí)行。如果代碼是在運行前就確定的,那么沒有必要使用eval()。如果代碼是在運行時動態(tài)確定的,那么也有其他更安全的辦法。例如使用方括號形式訪問元素的屬性:
// antipattern
var property = "name";
alert(eval("obj." + property));
// preferred
var property = "name";
alert(obj[property]);
使用eval()還有安全問題,比如運行網(wǎng)絡(luò)上的一段代碼,而這段代碼又被別人篡改了。在處理Ajax請求返回的JSON數(shù)據(jù)的時候,最好還是使用瀏覽器內(nèi)建的處理方法,如果對于低端的瀏覽器不支持的,可以從JSON.org上下載對應(yīng)的處理庫。
6、使用parseInt()轉(zhuǎn)換處理數(shù)字
使用parseInt()你可以將字符串轉(zhuǎn)為數(shù)字。這個方法支持第二個表示進制的參數(shù),常常被忽略。問題常常在處理一段以0開始的字符串的時候。在ECMAS3標(biāo)準(zhǔn)中,以0開始表示八進制,但是在ES5中又改了,所以為了避免麻煩,最好還是標(biāo)明第二個參數(shù)。
7、編碼規(guī)范
編碼的時候遵循一定的規(guī)范,可以讓代碼增強可移植性,并且更加便于閱讀和理解。加入團隊的新人,在閱讀了代碼規(guī)范之后,可以更加快速的溶入團隊,并理解其他人員開發(fā)的代碼。
8、縮進
代碼如果沒有縮進,那基本上沒法閱讀了。比這更糟的是不規(guī)范的縮進,看著好像縮進了,但是亂七八糟摸不著頭腦。所以縮進的使用必須規(guī)范。團隊遵循統(tǒng)一的規(guī)范
9、大括號
應(yīng)該使用大括號,尤其在那些可用可不用的地方,如果你的if語句或者for循環(huán)只有一句話,那么大括號不是必須的,但是這種時候最好用大括號。這可以讓代碼保持一致,并且便于升級。
10、命名規(guī)范
可以提高代碼移植性和可維護性的一個方面是命名規(guī)范。也就是說,在取變量名的時候總是采取一貫的做法。
11、寫注釋
必須給代碼寫注釋,就算它看起來不會被別人接手。有時候,研究完一個問題,然后你看著代碼覺得那是顯而易見的,但是過一兩周之后回頭再看,你也會摸不著頭腦的。
標(biāo)題名稱:javascript新版,JAvaScript
網(wǎng)站路徑:http://chinadenli.net/article21/dsgeecd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)、軟件開發(fā)、微信公眾號、用戶體驗、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)