摘要:定義類(lèi)常用新特性在一個(gè)數(shù)組或者列表中檢查是否存在一個(gè)值還能在字符串中使用除了增強(qiáng)了可讀性語(yǔ)義化,實(shí)際上給開(kāi)發(fā)者返回布爾值,而不是匹配的位置。
ES6常用新特性 1. let && const
let 命令也用于變量聲明,但是作用域?yàn)榫植?{ let a = 10; var b = 1; } 在函數(shù)外部可以獲取到b,獲取不到a,因此例如for循環(huán)計(jì)數(shù)器就適合使用let。 const用于聲明一個(gè)常量,設(shè)定后值不會(huì)再改變 const PI = 3.1415; PI // 3.1415 PI = 3; //TypeError: Assignment to constant variable.2. 解構(gòu)賦值
ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱(chēng)為解構(gòu)(Destructuring)。 例如數(shù)組: let [a, b, c] = [1, 2, 3]; //等同于 let a = 1; let b = 2; let c = 3; 這真的讓代碼看起來(lái)更優(yōu)美,有種python賦值的既視感。 對(duì)象的解構(gòu)賦值:獲取對(duì)象的多個(gè)屬性并且使用一條語(yǔ)句將它們賦給多個(gè)變量。 var { StyleSheet, Text, View } = React; 等同于 var StyleSheet = React.StyleSheet; var Text = React.Text; var View = React.View;3. 箭頭函數(shù)
ES6中新增箭頭操作符用于簡(jiǎn)化函數(shù)的寫(xiě)法,操作符左邊為參數(shù),右邊為具體操作和返回值。 var sum = (num1, num2) => { return num1 + num2; } //等同于 var sum = function(num1, num2) { return num1 + num2; }; 箭頭函數(shù)還修復(fù)了this的指向,使其永遠(yuǎn)指向詞法作用域: var obj = { birth: 1990, getAge: function () { var b = this.birth; // 1990 var fn = () => new Date().getFullYear() - this.birth; // this指向obj對(duì)象 return fn(); } }; obj.getAge(); // 254. ...操作符
這個(gè)的引入幾乎不會(huì)用到extend這個(gè)函數(shù)來(lái)。通過(guò)它可以將數(shù)組作為參數(shù)直接傳入函數(shù): var people = ["Lily", "Lemon", "Terry"]; function sayHello(people1,people2,people3){ console.log(`Hello ${people1},${people2},${people3}`); } sayHello(...people);//輸出:Hello Lily,Lemon,Terry5. iterable類(lèi)型
為了統(tǒng)一集合類(lèi)型,ES6標(biāo)準(zhǔn)引入了新的iterable類(lèi)型,Array、Map和Set都屬于iterable類(lèi)型,具有iterable類(lèi)型的集合可以通過(guò)新的for … of循環(huán)來(lái)遍歷。 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相關(guān)操作如下, 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"); // undefined6.類(lèi)
ES6提供了更接近傳統(tǒng)語(yǔ)言的寫(xiě)法,引入了Class(類(lèi))這個(gè)概念,作為對(duì)象的模板。通過(guò)class關(guān)鍵字,可以定義類(lèi),與多數(shù)傳統(tǒng)語(yǔ)言類(lèi)似。 //定義類(lèi) class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return "(" + this.x + ", " + this.y + ")"; } }7.Set
var arr = [1,2,3,3,3,3,14] var set = new Set(arr) var arr = Array.from(set) console.log(arr) // 1,2,3,14ES7常用新特性 1. Array.prototype.includes
在一個(gè)數(shù)組或者列表中檢查是否存在一個(gè)值 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"") } 除了增強(qiáng)了可讀性語(yǔ)義化,實(shí)際上給開(kāi)發(fā)者返回布爾值,而不是匹配的位置。 includes也可以在NaN(非數(shù)字)使用。最后 ,includes第二可選參數(shù)fromIndex,這對(duì)于優(yōu)化是有好處的,因?yàn)樗试S從特定位置開(kāi)始尋找匹配。 更多例子: 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(求冪運(yùn)算)
et a = 7 ** 12 let b = 2 ** 7 console.log(a === Math.pow(7,12)) // true console.log(b === Math.pow(2,7)) // true 開(kāi)發(fā)者還可以操作結(jié)果: 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)) // trueES8新特性 1. Object.values/Object.entries
ES5 引入了Object.keys方法,返回一個(gè)數(shù)組,成員是參數(shù)對(duì)象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵名。 Object.values方法返回一個(gè)數(shù)組,成員是參數(shù)對(duì)象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵值。 Object.entries方法返回一個(gè)數(shù)組,成員是參數(shù)對(duì)象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵值對(duì)數(shù)組。 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寫(xiě)異步代碼,會(huì)比較麻煩: axios.get(`/q?query=${query}`) .then(response => response.data) .then(data => { this.props.processfetchedData(data); }) .catch(error => console.log(error)); 使用Async/Await Async/Await使得異步代碼看起來(lái)像同步代碼,這正是它的魔力所在: 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是寫(xiě)異步代碼的新方式,以前的方法有回調(diào)函數(shù)和Promise。相比于Promise,它更加簡(jiǎn)潔,并且處理錯(cuò)誤、條件語(yǔ)句、中間值都更加方便
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/53660.html
摘要:定義類(lèi)常用新特性在一個(gè)數(shù)組或者列表中檢查是否存在一個(gè)值還能在字符串中使用除了增強(qiáng)了可讀性語(yǔ)義化,實(shí)際上給開(kāi)發(fā)者返回布爾值,而不是匹配的位置。 ES6常用新特性 1. let && const let 命令也用于變量聲明,但是作用域?yàn)榫植?{ let a = 10; var b = 1; } 在函數(shù)外部可以獲取到b,獲取不到a,因此例如for循環(huán)計(jì)數(shù)器就適...
摘要:前言月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書(shū)了入門(mén),覺(jué)得看看這本書(shū)就足夠了。前端的異步解決方案之和異步編程模式在前端開(kāi)發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(shū)(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書(shū)的目的是以目前還在制定中的ECMASc...
閱讀 1343·2021-10-08 10:05
閱讀 4171·2021-09-22 15:54
閱讀 3132·2021-08-27 16:18
閱讀 3134·2019-08-30 15:55
閱讀 1477·2019-08-29 12:54
閱讀 2778·2019-08-26 11:42
閱讀 579·2019-08-26 11:39
閱讀 2158·2019-08-26 10:11