最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ES6中非常實用的新特性介紹

 更新時間:2016年03月10日 09:56:34   作者:AlexChen  
ECMAScript 6離我們越來越近了,作為它最重要的方言,Javascript也即將迎來語法上的重大變革,InfoQ特開設“深入淺出ES6”專欄,來看一下ES6將給我們帶來哪些新內(nèi)容

ECMAScript 6離我們越來越近了,作為它最重要的方言,Javascript也即將迎來語法上的重大變革,InfoQ特開設“深入淺出ES6”專欄,來看一下ES6將給我們帶來哪些新內(nèi)容。

寫在前面

ES6 已經(jīng)提交給 Ecma 大會審查了,也就是說,我們將迎來一大波 javascript 的最新標準,還有一些語法糖。ES6 中有很多值得我們關注的東西,下面是我發(fā)現(xiàn)的一些我們最常用的一些新特性,進行記錄一下。

1. for-of循環(huán)

這個東西用來循環(huán)數(shù)組很爽,原因呢,是因為它彌補了目前 es5 中循環(huán)數(shù)組的一切缺陷。

比如 for-in,它會遍歷數(shù)組對象的附加屬性,而不僅僅是遍歷數(shù)組值。還有一點是,for-in 中的索引是 string 類型的,這一點尤其重要。

var arrObj=['alexchen',1,{}];
arrObj._name='attr-AlexChen';
for(var i in arrObj){
console.log(arrObj[i]) // 會把_name屬性也遍歷出來 
console.log(typeof(i)) // 全部輸出 string
}

當然我們還有 forEach() 函數(shù),它也有問題,比如你不能在里面 break return 之類的:

var arrObj = ['alexchen','boy','great'];
arrObj.forEach(function (v) {
if (v == 'boy') {
return 'can not return';
}
console.log(v) //會輸出alexchen great
})

這樣看起來要比 for-in 簡便很多。但就像上面說的一樣,它有也有不足的地方。那么我們來試試 for-of 吧:

var arrObj = ['alexchen',1,{}];
arrObj._name = 'attr-alexchen';
for (var i of arrObj) {
console.log(i);//這里只會輸出,alexchen,1,object{},不會輸出attr-alexchen
console.log(typeof(i))//這里會輸出 string,number,object
if (i == 1) {
break;
}
console.log(i)//只會輸出 alexchen,滿足條件之后就不在繼續(xù)循環(huán),提高了效率并且可以自由控制跳出循環(huán)或繼續(xù)循環(huán)
}

可以看到:

當使用 for-of 的時候,循環(huán)的是數(shù)組內(nèi)部的元素且不會出現(xiàn) for-in 中將附加屬性也遍歷的情況,其次,循環(huán)變量的類型和其在數(shù)組中的類型保持一致,而不是全部是 string 的情況。

就這兩點就值得我們選擇 for-of 而不是 forEach() 或 for-in 當然,現(xiàn)在還有些瀏覽器不支持。不過以上代碼可以在最新版本的 FireFox 執(zhí)行成功并得到預期結(jié)果。當然 for-of 并不是只在數(shù)組上使用,你可以用在任何類數(shù)組類型的對象上,比如 DOM NodeList, 字符串 等。

2. 模版字符串

這個東西也非常好玩,用在字符串拼接的地方。從名稱上我們就知道是干啥的了。在前端開發(fā)過程中難免會遇到要動態(tài)拼接字符串的情況(動態(tài)dom生成,數(shù)據(jù)格式化)等:

(function sayHello(name, words) { 
console.log(`hello: ${name},welcome es6,your words is: ${words}`); //
})('alexchen','im admin')//運行之后將會輸出:hello: alexchen,welcome es6,your words is: im admin

注意,被當作模版的字符串使用 ` 號包裹的。其中 $(paramenter) 是占位符,而且支持對象,eg:$(obj.name) 這種形式。與普通字符串相比模版字符串可以寫成多行而不需要用 + 連接:

hello:$(name),
welcome es6,
your words is $(words)

值得注意的是,模版字符串不會轉(zhuǎn)義特殊字符,因此需要自己處理其中的安全隱患。模版字符串并不能夠代替模版框架,原因是模版字符串沒有內(nèi)置的循環(huán)語法和條件語句。因此,對于常規(guī)的普通的字符串拼接,我們可以使用它來完成,會讓你的代碼看起來更酷一點。PS(除此之外,我覺得它并沒有什么卵用。ψ(╰_╯))

這里有更詳細的介紹來解決上面說道的沒有內(nèi)置循環(huán)和判斷分支的問題:

es6-模版字符串-mozilla

3. 默認參數(shù)(Defaults parameters)

這個有點意思,是這樣的,我們都知道 js 函數(shù)是不需要給函數(shù)參數(shù)設置默認值的,比如如下代碼會報錯:

(function(a=0,b=0){return a+b;})(1,2)//不支持es6的瀏覽器下會報錯的SyntaxError: Unexpected token =

這也就意味著,我們的參數(shù)不能給默認值,如果需要給參數(shù)默認值就需要在函數(shù)內(nèi)部判斷其是否為 undefined 的方式來處理。然而在 ES6 中呢,我們可以給參數(shù)設置默認值,而不用在函數(shù)內(nèi)部去判斷后賦默認值,不但可以賦值默認值,還可以使用運算表達式,如下:

(function testDefaultsParams(pars1 = "alexchen",
pars2 = (pars1 == "alexchen") ? "admin" : "not admin") {
console.log(`welcome ${pars1} ,u r ${pars2}!!`)//用到了上面說的模版字符串
})();
/**參數(shù)為空時輸出,welcome alexchen ,u r admin!!,
如果第一個參數(shù)不是alexchen則輸出,welcome alexchen ,u r not admin!!**/

這種方式在編寫代碼時非常的簡便,和動態(tài)語言一樣,比如 c# 中。這樣既直觀,又方便。所以用起來還是很不錯的。還一個剩余參數(shù)(Rest parameters),筆者沒發(fā)現(xiàn)有什么特別的用處,因此就不寫啦,感興趣的可以去看看

默認參數(shù)和剩余參數(shù)-mozilla

ES6 中還有很多新特性和語法。感興趣的可以看一下 mozilla 團隊的博客,里面有很詳細的介紹,而且是系列文章。

mozilla-ES6-系列介紹

好了,以上就是我在 ES6 中發(fā)現(xiàn)的三個比較實用的新東西,這三個應該是日常開發(fā)中用的最多的了,在此做個記錄。

關于ES6中非常實用的新特性介紹就給大家介紹這么多,希望對大家有所幫助!

相關文章

  • webpack file-loader和url-loader的區(qū)別

    webpack file-loader和url-loader的區(qū)別

    這篇文章主要介紹了webpack file-loader和url-loader的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Javascript函數(shù)式編程語言

    Javascript函數(shù)式編程語言

    JavaScript 是近年來非常受矚目的一門編程語言,它既支持面向?qū)ο缶幊蹋仓С趾瘮?shù)式編程。本文專門介紹JavaScript函數(shù)式編程的特性。
    2015-10-10
  • JS代碼編譯器Monaco使用方法

    JS代碼編譯器Monaco使用方法

    Monaco是微軟家的,支持的語言很多,還有縮略地圖,有時候提示不好用然后包體很大的問題,但是這是極少數(shù),今天小編給大家分享JS編譯器Monaco使用教程,感興趣的朋友一起看看吧
    2021-06-06
  • 微信小程序?qū)崿F(xiàn)頂部選項卡(swiper)

    微信小程序?qū)崿F(xiàn)頂部選項卡(swiper)

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)頂部選項卡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 最簡單的JavaScript圖片輪播代碼(兩種方法)

    最簡單的JavaScript圖片輪播代碼(兩種方法)

    基于javascript代碼實現(xiàn)最簡單的圖片輪播效果,非常簡單,本文通過兩種方式給大家介紹最簡單的圖片輪播,感興趣的朋友一起學習吧
    2015-12-12
  • 微信小程序?qū)崿F(xiàn)上傳視頻功能

    微信小程序?qū)崿F(xiàn)上傳視頻功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)上傳視頻功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • js制作簡易年歷完整實例

    js制作簡易年歷完整實例

    這篇文章主要介紹了js制作簡易年歷的方法,包括實現(xiàn)的思路以及js、css與html各個部分的實現(xiàn)技巧,需要的朋友可以參考下
    2015-01-01
  • js仿黑客帝國字母掉落效果代碼分享

    js仿黑客帝國字母掉落效果代碼分享

    這篇文章主要展示了js仿黑客帝國字母掉落效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • 利用策略模式與裝飾模式擴展JavaScript表單驗證功能

    利用策略模式與裝飾模式擴展JavaScript表單驗證功能

    這篇文章主要介紹了利用策略模式與裝飾模式擴展JavaScript表單驗證功能,需要的朋友可以參考下
    2017-02-02
  • 微信小程序?qū)崿F(xiàn)自定義導航欄

    微信小程序?qū)崿F(xiàn)自定義導航欄

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)自定義導航欄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論

新郑市| 城口县| 赤峰市| 桑植县| 东乡县| 开原市| 赣榆县| 怀远县| 成武县| 崇义县| 枝江市| 铜鼓县| 江陵县| 上虞市| 南皮县| 伊通| 航空| 晋城| 锡林浩特市| 淮安市| 清流县| 建湖县| 塔河县| 新巴尔虎左旗| 金湖县| 江达县| 泉州市| 娱乐| 南和县| 防城港市| 南陵县| 石屏县| 晋江市| 罗平县| 灵寿县| 邵阳县| 吐鲁番市| 惠州市| 临漳县| 黄冈市| 镇原县|