摘要:可以通過調(diào)用方法將創(chuàng)建一個新的類型的值,這個值獨一無二,不與任何值相等。還可以使可擴展,在中,表達式被標準化為構(gòu)造函數(shù)的一個方法,這意味著它是可擴展的。
前端發(fā)展的太快了,快到ES6,ES7出來之后,今年已經(jīng)是ES8了,但是縱然前端發(fā)展很快,我們除了馬不停蹄的學習新的技術之外,也要沉下心來,好好的潛心磨礪自己,本文是整理了自己學習ES6之后相關的知識要點,寄希望于書之于筆,一來自己可以更好地領悟,而來也可以留作日后翻閱查看。
ES6新增的知識點主要包括變量聲明let以及const,新增類型symbol,模板字符串,語法糖實現(xiàn)類,用于異步調(diào)用的promise對象,模塊化,箭頭函數(shù),rest參數(shù)以及參數(shù)默認值,Set和Map集合,for of循環(huán)和迭代器iterator以及Generator等等,可以看出,ES6較之于ES5還是有著很多的新增特性,接下來會分為幾篇文章將其一一介紹。
let和const
在JavaScript中咱們以前主要用關鍵var來定義變量,ES6之后,新增了定義變量的兩個關鍵字,分別是let和const
對于變量來說,在ES5中var定義的變量會提升到作用域中所有的函數(shù)與語句前面,而ES6中l(wèi)et定義的變量則不會,let聲明的變量會在其相應的代碼塊中建立一個暫時性死區(qū),直至變量被聲明。
//var聲明變量 console.log(x === undefined); // "true" var x = 3; //let聲明變量 console.log(x === undefined); // Uncaught ReferenceError: x is not defined let x = 3;
從上面的代碼可以看出來,使用let我們可以偽造一個代碼塊,終于不再局限于函數(shù)作用域中,而且對于代碼也會更加的規(guī)范,使用let定義變量,提倡人們先定義再使用,不然會報錯。
const主要作用于定義常量,而且一旦聲明,初始必須賦值,并且變量值不能更改,否則會報錯
const CALA; //Missing initializer in const declaration const CALA="calabash519" CALA="hello world"; //Assignment to constant variable.
symbol
ES6 以前,我們知道5種基本數(shù)據(jù)類型分別是Undefined,Null,Boolean,Number以及String,然后加上一種引用類型Object構(gòu)成了JavaScript中所有的數(shù)據(jù)類型,但是ES6出來之后,新增了一種數(shù)據(jù)類型,名叫symbol,像它的名字表露的一樣,意味著獨一無二,意思是每個 Symbol類型都是獨一無二的,不與其它 Symbol 重復。
可以通過調(diào)用 Symbol() 方法將創(chuàng)建一個新的 Symbol 類型的值,這個值獨一無二,不與任何值相等。
var mySymbol=Symbol(); console.log(typeof mySymbol) //"symbol"
其他類型可以被強制轉(zhuǎn)換成字符串,但是Symbol 卻不能,千萬不要這么做,不然會報錯,提示TypeError。
可以使用Symbol來定義對象的屬性,而且當Symbol作為屬性名的時候,必須用[]來進行調(diào)用而不是點操作符。
var obj = {}; var mySymbol = Symbol(); obj[mySymbol] = "calabash519"; console.log(obj[mySymbol]); //calabash519 console.log(obj.mySymbol); //undefined
Symbol還可以使 instanceof 可擴展,在 ES6 中,object instanceof constructor 表達式被標準化為構(gòu)造函數(shù)的一個方法:constructor[Symbol.hasInstance](object),這意味著它是可擴展的。
模板字符串
字符串是JavaScript中基本類型之一,應該算是除了對象之外是使用最為頻繁的類型吧,字符串中包含了例如substr,replace,indexOf,slice等等諸多方法,ES6引入了模板字符串的特性,用反引號來表示,可以表示多行字符串以及做到文本插值(利用模板占位符)。
// 以前的多行字符串我們這么寫: console.log("hello world 1 hello cala"); // "hello world // hello cala" //有了模板字符串之后 console.log(`hello world string text line 2`); // "hello world // hello cala"
可以用${}來表示模板占位符,可以將你已經(jīng)定義好的變量傳進括弧中,例如:
var name="cala"; var age=22; console.log(`hello,I"am ${name},my age is ${age}`) //hello,I"am cala,my age is 22
上述是個很簡單的例子,展示了模板字符串和模板占位符的基本用法,對比與普通字符串,模板字符串可以更好地支持自動轉(zhuǎn)義特殊的字符串,也可以在其內(nèi)嵌套控制語句,使得代碼的邏輯更加清晰。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/87273.html
摘要:的翻譯文檔由的維護很多人說,阮老師已經(jīng)有一本關于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。 JavaScript Promise 迷你書(中文版) 超詳細介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...
摘要:提供了解構(gòu)賦值的方式,這樣子在賦值多個變量或者進行注釋時可以方便很多,不同場景下也有很多新的應用,個人常使用的有數(shù)組的解構(gòu)賦值,對象的解構(gòu)賦值和函數(shù)參數(shù)的解構(gòu)賦值,函數(shù)參數(shù)的解構(gòu)賦值之前總結(jié)過,這里寫下數(shù)組的和對象的簡單總結(jié)吧函數(shù)參數(shù)的解構(gòu) ES6提供了解構(gòu)賦值的方式,這樣子在賦值多個變量或者進行注釋時可以方便很多,不同場景下也有很多新的應用,個人常使用的有數(shù)組的解構(gòu)賦值,對象的解構(gòu)賦...
摘要:返回一個對象,遍歷對象自身和繼承的所有可枚舉屬性不含,與相同和在紅寶書中就已經(jīng)提到過屬性,表示的是引用類型實例的一個內(nèi)部指針,指向該實例的構(gòu)造函數(shù)的原型對象。 半個月前就決定要將ES6的學習總結(jié)一遍,結(jié)果拖延癥一犯,半個月就過去了,現(xiàn)在補起來,慚愧慚愧。 阮一峰的《ES6標準入門》這本書有300頁左右,除了幾個新的API和js語法的擴展,真正有價值的內(nèi)容并不多。所謂存在即合理,每部分的...
摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業(yè)務工作時也會不定期更...
摘要:對于,雖然之前也有過學習,但總的來說還是不夠系統(tǒng)的,知識點非常的零碎。因此包括以為基礎產(chǎn)生的語法糖在逐漸的趨近于強類型的語言。是創(chuàng)建,而不是的覆蓋。因而稱之為富一代。所以語法標準的更新將對良好編程習慣有著極大的利好。 對于ES6,雖然之前也有過學習,但總的來說還是不夠系統(tǒng)的,知識點非常的零碎?,F(xiàn)在結(jié)合之前遇到的問題把ES6中的知識點總結(jié)一下。最初接觸ES6時,明白ES5中聲明變量的方式...
閱讀 2004·2021-08-11 11:13
閱讀 1028·2021-07-25 21:37
閱讀 2583·2019-08-29 18:42
閱讀 2519·2019-08-26 12:18
閱讀 924·2019-08-26 11:29
閱讀 1697·2019-08-23 17:17
閱讀 2672·2019-08-23 15:55
閱讀 2615·2019-08-23 14:34