1. 程式人生 > >ES6的幾個新特徵

ES6的幾個新特徵

廢話少說,還是直接上程式碼吧。

1、引數預設值

以前是這麼寫的:

var link = function (height, color, url) {
    var height = height || 50
    var color = color || 'red'
    var url = url || 'http://azat.co'
    ...
}

很顯然以前的寫法有點技巧性,現在則可以這麼寫:

var link = function(height = 50, color = 'red', url = 'http://azat.co') {
  ...
}

很顯然跟我們熟悉的C++寫法一樣了。

2、模板面值

以前跟Java的寫法很像:

var name = 'Your name is ' + first + ' ' + last + '.'
var url = 'http://localhost:3000/api/messages/' + id

現在:

var name = `Your name is ${first} ${last}.`
var url = `http://localhost:3000/api/messages/${id}`

注意單引號變成了`,裡面的值要用${}包起來。

3、字串多行時的情況

以前用+解決:

var roadPoem = 'Then took the other, as
just as fair,\n\t' + 'And having perhaps the better claim\n\t' + 'Because it was grassy and wanted wear,\n\t' + 'Though as for that the passing there\n\t' + 'Had worn them really about the same,\n\t' var fourAgreements = 'You have the right to be you.\n\ You can only be you when you do your best.'

現在用逗號解決:

var roadPoem = `Then took the other, as just as fair,
    And having perhaps the better claim
    Because it was grassy and wanted wear,
    Though as for that the passing there
    Had worn them really about the same,`

var fourAgreements = `You have the right to be you.
    You can only be you when you do your best.`

注意外面還是用“`”。

4、分解賦值

以前吧就得分開賦值:

var jsonMiddleware = require('body-parser').json

var body = req.body, // body has username and password
var username = body.username,
var password = body.password 

現在用不著了,它自己可以找到對應的值:

var {house, mouse} = $('body').data() // we'll get house and mouse variables
var {json: jsonMiddleware} = require('body-parser')
var {username, password} = req.body

5、箭頭函式

以前的:

var _this = this
$('.btn').click(function(event){
  _this.sendData()
})

現在的:

$('.btn').click((event) =>{
  this.sendData()
})

這裡多看一個例子,以前函式返回必須用return關鍵字,現在如果條件允許的話就可以不用return了:

var ids = ['5632953c4e345e145fdf2df8', '563295464e345e145fdf2df9'];
var messages = ids.map(function (value, index, list) {
  return 'ID of ' + index + ' element is ' + value + ' ' // explicit return
})

現在有了箭頭函式以後是這樣的:

var ids = ['5632953c4e345e145fdf2df8','563295464e345e145fdf2df9']
var messages = ids.map((value, index, list) => `ID of ${index} element is ${value} `) // implicit return

6、Promise

下面這個函式很熟悉:

setTimeout(function(){
  console.log('Yay!')
}, 1000)

很顯然是非同步延遲的嘛,那麼現在用promise怎麼寫呢?

var wait1000 =  new Promise(function(resolve, reject) {
  setTimeout(resolve, 1000)
}).then(function() {
  console.log('Yay!')
})

如果再改為箭頭函式的話:

var wait1000 =  new Promise((resolve, reject)=> {
  setTimeout(resolve, 1000)
}).then(()=> {
  console.log('Yay!')
})

let與var的作用範圍

我們知道var一般寫在變數前面,但是這個var所控制變數的生命週期著實讓初學者頭疼,因為跟我們常見的Java或者C++變數定義的範圍不一樣嘛,var的生命週期是在函式範圍內的,也就是說,var一旦定義了,跟函式的生命週期是一致的,所以為了避免這種不必要的麻煩,迴歸到Java或者C++語言變數生命週期的可控性,那麼我們就用let代替var:

function calculateTotalAmount (vip) {
  var amount = 0 // probably should also be let, but you can mix var and let
  if (vip) {
    let amount = 1 // first amount is still 0
  } 
  { // more crazy blocks!
    let amount = 100 // first amount is still 0
    {
      let amount = 1000 // first amount is still 0
      }
  }  
  return amount
}

console.log(calculateTotalAmount(true))

也就是說在一個程式碼塊定義的,生命週期只能在程式碼塊範圍

參考文獻

相關推薦

ES6特徵

廢話少說,還是直接上程式碼吧。 1、引數預設值 以前是這麼寫的: var link = function (height, color, url) { var height = height || 50 var color = color

JDK1.8的特性

bsp 我們 get per 年齡 就是 person int ++ 場景一:假設我們有一個 List 包含一系列的 Person,Person 有姓名 name 和年齡 age 連個字段。現要求這個列表中年齡大於 20 的人數。通常按照以前我們可能會這麽寫:long co

中國電科集團董事長熊群力:常態下物聯網有三特徵

在2017世界物聯網博覽會峰會上,中國電科集團董事長熊群力發表主旨演講。 他表示,物聯網是先進資訊科技高度整合和綜合應用,其發展是一個不斷演進的過程,特別是隨著移動互聯,大資料、人工智慧等先進資訊科技爆發與深度滲透,使得物聯網產業發展趨勢發生了更為深刻、多元的變化。 2009年,物聯

概率論第9記:隨機變數的另外數字特徵

這篇文章總結:矩、中心矩、分位數的概念 矩和中心距 設X是隨機變數,如果E(Xk) k=1,2,…存在,則稱它為X的k階原點矩或k階矩。 如果E{[X-E(x)]k}存在,則稱它為X的k階中心矩。 顯然,2階中心距就是方差。 分位數 設連續型隨機變數X的分佈函式為F(x),概

管理者如何面對不確定性,環境變化的這重要特徵你知道麼

文 / 陳春花 如何面對不確定性是我最近一直關注的主要話題之一,因為管理者在今天需要擁有的最重要的能力是:管理不確定性。以下是有關不確定性問題的幾個主要的視角和解決之道。 對於環境的理解,需要從根本上去把握,而不是簡單看現象。這是一個變化異常的時代,很多認知都被現象所

SQL Server 2005的功能

SQL Server 2005相對於SQL Server 2000改進很大,有些還是非常實用的。 舉幾個例子來簡單說明 這些例子我引用了Northwind庫。 1. TOP 表示式  SQL Server 2000的TOP是個固定值,是不是覺得不爽,現在改進了,可以使用表

簡要歸納es6方法

eg1: 將arr1賦值arr2 es5做法,先做for迴圈把arr1遍歷出來截止逐一push至arr2. es6做法,let arr2 = […arr1]; eg2: for of 方法. es5做法,for迴圈 var x< xxx.len

2019,我在的技術領域的嘗試和心得

​       又到一年結束時,回顧這一年,我在幾個新的技術領域取得了一些小小的收穫,這其中,有App相關的,也有App領域之外的。接下來,我來談談自己的一些實踐和心得體會。  1)《Android外掛化開發指南》的英文版出版 ​     &

uiview的的界面刷的方法

uic get -1 sed space notebook ase 幀動畫 技術分享 可參考鏈接 UICoordinateSpace 接口,從當前視圖的坐標轉化到在screen的坐標體 <font color=#0099ff size=7 face="黑體

在Android中使App高速、簡單地支持浪微博、微信、QQ、facebook等十主流社交平臺的分享功能

分析 ont renren androidm mod 執行 xen 12px 操作 前言 在如今的APP或者遊戲中,分享功能差點兒已經成為標配。分享功能不但能夠滿足用戶的需求。也能夠為產品帶來很多其它的用戶,甚至能夠對用戶的行為、活躍度、年齡段等情況進行數據統計,使得軟

C++11特性應用--介紹新增的便利算法(用於排序的算法)

uil pretty processor nes container 升序 .text mar c++11 繼續C++11在頭文件algorithm中添加的算法。 至少我認為,在stl的算法中,用到最多的就是sort了,我們不去探索sort的源代碼。就

全面梳理百度世界大會,李彥巨集又吹了牛!

7月4日百度 AI 開發者大會上,李彥巨集說:“曾經吹過的牛實現了,全球首款 L4 級量產自動駕駛巴士‘阿波龍’量產下線!” 如今,阿波龍已經安全運營了整整120天。 4個月後的今天,來看看李彥巨集在百度世界大會上又立了三個flag: Flag 1:百度即將釋出

es6 陣列例項的 entries() , keys() 和 values() ES6 提供三個新的方法 —— entries(),keys()和values() —— 用於遍歷陣列。它們都返回一個遍歷器物件,可以用for...of迴圈進行遍歷,唯一的區別是keys()是對鍵名的遍歷、values(

ES6 提供三個新的方法 —— entries(),keys()和values() —— 用於遍歷陣列。它們都返回一個遍歷器物件,可以用for...of迴圈進行遍歷,唯一的區別是keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷

優化網站需要注意的細節 讓效果達到良好

因為每一個網站架構是不一樣,因此網站優化前期準備工作也是不一樣,作為一個專業優化人員,必須對需要優化的網站架構有一定了解。特別是在對於新網站做優化的時候,需要了解清楚好,因為新網站優化不好,可能會讓後期網站排名很不好,今天小編要給大家介紹一下優化新網站需要了解的幾個細節問題。   1、網頁

在Android中使App快速 簡單地支援浪微博 微信 QQ facebook等十主流社交平臺的分享功能

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

es6 解構賦值 的注意點

1、結構不成功,變數值等於undefined let [lzp] = []; let [lt, lzp] = [1]; 以上兩種情況屬於結構不成功, lzp 的值都是 undefined 2、如果等號的右邊不是陣列,則會報錯 // 等號右邊的都不是陣列,所以都會報錯 let [

學了python模組,不是很雞肋。

先說一個模組分類(基本上所有模組都是小寫開頭,雖然規範的寫法是變數的命名規範,但是,都是這樣寫的) 1,C編寫並鑲嵌到python直譯器中的內建模組 2,包好的一組模組的包 3.已經被編譯好的共享庫,或者是DLL的C或者是C++擴充套件 4,自己用python寫好的程式碼 用模組就是為了能重用程式碼

ES6實用技巧,你了解嗎?

副本 func https 實用技巧 for count 語句 key 交換 本文給大家分享了es6的幾個實用技巧,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧 Hack #1 交換元素 利用 數組解構來實現值的互換 let a = ‘world‘, b = ‘

區塊鏈規,不可忽視的細節

第一、區塊鏈媒體,是否受區塊鏈新規管理? 請注意,區塊鏈新規對於其規制的內容進行的框定:基於區塊鏈技術或者系統,通過網際網路站、應用程式等形式,向社會公眾提供資訊服務。 也就是說,判斷一家區塊鏈媒體是否受本規定管理,主要看該媒體採取的是傳統的傳播技術和渠道,還是通過區塊鏈

Java 11正式釋出,這逆天特性教你寫出更牛逼的程式碼

   1就在前段時間,Oracle 官方宣佈 Java 11 (18.9 LTS) 正式釋出,可在生產環境中使用! 這無疑對我們來說是一大好的訊息。作為一名java開發者來說,雖然又要去學習和了解java11,但內心還是欣慰的。我想至少你和我一樣的心情:Java在手,天