您好,登錄后才能下訂單哦!
ES6常用新特性
1. let && const
let 命令也用于變量聲明,但是作用域為局部 { let a = 10; var b = 1; } 在函數外部可以獲取到b,獲取不到a,因此例如for循環計數器就適合使用let。 const用于聲明一個常量,設定后值不會再改變 const PI = 3.1415; PI // 3.1415 PI = 3; //TypeError: Assignment to constant variable.
2. 解構賦值
ES6 允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構(Destructuring)。 例如數組: let [a, b, c] = [1, 2, 3]; //等同于 let a = 1; let b = 2; let c = 3; 這真的讓代碼看起來更優美,有種python賦值的既視感。 對象的解構賦值:獲取對象的多個屬性并且使用一條語句將它們賦給多個變量。 var { StyleSheet, Text, View } = React; 等同于 var StyleSheet = React.StyleSheet; var Text = React.Text; var View = React.Text;
3. 箭頭函數
ES6中新增箭頭操作符用于簡化函數的寫法,操作符左邊為參數,右邊為具體操作和返回值。
var sum = (num1, num2) => { return num1 + num2; } //等同于 var sum = function(num1, num2) { return num1 + num2; }; 箭頭函數還修復了this的指向,使其永遠指向詞法作用域: var obj = { birth: 1990, getAge: function () { var b = this.birth; // 1990 var fn = () => new Date().getFullYear() - this.birth; // this指向obj對象 return fn(); } }; obj.getAge(); // 25
4. ...操作符
這個的引入幾乎不會用到extend這個函數來。通過它可以將數組作為參數直接傳入函數:
var people = ['Lily', 'Lemon', 'Terry']; function sayHello(people1,people2,people3){ console.log(`Hello ${people1},${people2},${people3}`); } sayHello(...people);//輸出:Hello Lily,Lemon,Terry
5. iterable類型
為了統一集合類型,ES6標準引入了新的iterable類型,Array、Map和Set都屬于iterable類型,具有iterable類型的集合可以通過新的for … of循環來遍歷。
var a = ['A', 'B', 'C']; var s = new Set(['A', 'B', 'C']); var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); for (var x of a) { // 遍歷Array alert(x); } for (var x of s) { // 遍歷Set alert(x); } for (var x of m) { // 遍歷Map alert(x[0] + '=' + x[1]); } Map相關操作如下, Set同理: var m = new Map(); // 空Map m.set('Adam', 67); // 添加新的key-value m.set('Bob', 59); m.has('Adam'); // 是否存在key 'Adam': true m.get('Adam'); // 67 m.delete('Adam'); // 刪除key 'Adam' m.get('Adam'); // undefined
6.類
ES6提供了更接近傳統語言的寫法,引入了Class(類)這個概念,作為對象的模板。通過class關鍵字,可以定義類,與多數傳統語言類似。
//定義類 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + this.x + ', ' + this.y + ')'; } }
ES7常用新特性
1. Array.prototype.includes
在一個數組或者列表中檢查是否存在一個值 let arr = ['react', 'angular', 'vue'] // Correct if (arr.includes('react')) { console.log('Can use React') } 還能在字符串中使用includes: let str = 'React Quickly' // Correct if (str.toLowerCase().includes('react')) { // true console.log('Found "react"') } 除了增強了可讀性語義化,實際上給開發者返回布爾值,而不是匹配的位置。 includes也可以在NaN(非數字)使用。最后 ,includes第二可選參數fromIndex,這對于優化是有好處的,因為它允許從特定位置開始尋找匹配。 更多例子: console.log([1, 2, 3].includes(2)) // === true) console.log([1, 2, 3].includes(4)) // === false) console.log([1, 2, NaN].includes(NaN)) // === true) console.log([1, 2, -0].includes(+0)) // === true) console.log([1, 2, +0].includes(-0)) // === true) console.log(['a', 'b', 'c'].includes('a')) // === true) console.log(['a', 'b', 'c'].includes('a', 1)) // === false)
2.Exponentiation Operator(求冪運算)
et a = 7 ** 12 let b = 2 ** 7 console.log(a === Math.pow(7,12)) // true console.log(b === Math.pow(2,7)) // true 開發者還可以操作結果: let a = 7 a **= 12 let b = 2 b **= 7 console.log(a === Math.pow(7,12)) // true console.log(b === Math.pow(2,7)) // true
ES8新特性
1、Object.values/Object.entries
ES5 引入了Object.keys方法,返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵名。
Object.values方法返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵值。
Object.entries方法返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵值對數組。
let {keys, values, entries} = Object; let obj = { a: 1, b: 2, c: 3 }; for (let key of keys(obj)) { console.log(key); // 'a', 'b', 'c' } for (let value of values(obj)) { console.log(value); // 1, 2, 3 } for (let [key, value] of entries(obj)) { console.log([key, value]); // ['a', 1], ['b', 2], ['c', 3] }
2. String padding(字符串填充)
3. Async/Await
使用Promise 使用Promise寫異步代碼,會比較麻煩: axios.get(`/q?query=${query}`) .then(response => response.data) .then(data => { this.props.processfetchedData(data); }) .catch(error => console.log(error)); 使用Async/Await Async/Await使得異步代碼看起來像同步代碼,這正是它的魔力所在: async fetchData(query) => { try { const response = await axios.get(`/q?query=${query}`); const data = response.data; return data; } catch (error) { console.log(error) } } fetchData(query).then(data => { this.props.processfetchedData(data) })
Async/Await是寫異步代碼的新方式,以前的方法有回調函數和Promise。相比于Promise,它更加簡潔,并且處理錯誤、條件語句、中間值都更加方便
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。