摘要:的簡稱是于年月正式發(fā)布的語言的標準報錯報錯報錯可以重復定義并無塊級作用域,不能重復定義有塊級作用域,定義常量賦值報錯在解構賦值過程總,必須左右結構相同箭頭函數(shù)中的普通函數(shù)箭頭函數(shù)方便以后多次調(diào)用箭頭函數(shù)中當參數(shù)只有一個的時候可以省略括號,當
ES6(ECMAScript 6的簡稱),是于2015年6月正式發(fā)布的JavaScript語言的標準
let/const//var var a=1; var a=5; if(a>4){ var b=10; } console.log(b); //10 //let let a=1; let a=5; //報錯:dentifier "a" has already been declared let a=5; if(a>4){ let b=10; } console.log(b); //報錯:b is not defined //const const a=1; a=5; //報錯:Assignment to constant variable.
var可以重復定義并無塊級作用域,let不能重復定義有塊級作用域,const定義常量
賦值let list=[1,2,3] let [a,b,c]=list console.log(a,b,c) //1 2 3 let dict={name:"jim",age:21} let {name,age}=dict console.log(name,age) //jim 21 let dict={name:"jim",age:21} let [name,age]=dict //報錯:dict is not iterable
在解構賦值過程總,必須左右結構相同
箭頭函數(shù)(python中的lambda)
#普通函數(shù) function fn(arg1,arg2){ return arg1+arg2 } #箭頭函數(shù) (arg1,arg2)=>arg1+arg2 var fn=(arg1,arg2)=>arg1+arg2 //方便以后多次調(diào)用
箭頭函數(shù)中當參數(shù)只有一個的時候可以省略括號,當無參數(shù)時必須寫一對小括號,當函數(shù)體只有一句時可以省略大括號,且語句默認就是返回值,不需要寫return
for in/of#js中的in只能用來遍歷下表,這是一個很大的痛點,所以of的出現(xiàn)本人非常的喜歡 let iterator=[0,2,4,6,8,16,32,64] for i in iterator: console.log(i) //0,1,2,3,4,5,6,7 for i of iterator: console.log(i) //0,2,4,6,8,16,32,64默認參數(shù)
//之前 function fn(arg1,arg2){ let x=arg1 || 5; let y=arg2 || 6; return x+y } console.log(fn) //11 //es6 function fn(arg1=5,arg2=6){ return arg1+arg2 } console.log(fn) //11 let list=[1,2,3,4,5,6] function fn(arg1,arg2,...args){ console.log(arg1,arg2,args) } fn(...list) //1 2 Array(4) Array(4)表示為[3,4,5,6]
這種寫法更直觀清晰,且介紹內(nèi)部的邏輯代碼,和python寫法很類似
數(shù)組let list = [1, 2, 3, 4, 5, 6] //map let new_list=list.map((arg)=>{ //每個元素將作為參數(shù)依此傳入 if(arg>4){ return true }else{ return false } }) console.log(new_list) //[false, false, false, false, true, true] //reduce let list = [1, 2, 3, 4, 5, 6] let new_list=list.reduce((sum,arg)=>{ //第一次將前兩個參數(shù)傳入,接下來將結果作為第一個參數(shù),其他list元素以此傳入 return sum+arg }) console.log(new_list) //21 //filter let new_list=list.filter((arg)=>{ if(arg>4){ return true //根據(jù)返回的布爾值判斷是否放入新list } }) console.log(new_list) //[5,6] //forEach let new_list=list.map((arg)=>{ //每個元素將作為參數(shù)依此傳入 return arg }) console.log(new_list) //[1, 2, 3, 4, 5]
這和python中的map,reduce,filter高階函數(shù)作用幾乎相同,只不過在js中只作為了數(shù)組的方法,而python中是沒有forEach方法的,原因可能是map可以達到作用吧,在我看來是這個樣子,如有不同,請告知本寶寶,哈哈。
對象let name="jim" let age=21 let obj={ name:name, age:age, show:function(){ console.log(name,age) } } obj.show() //jim 21 console.log(obj) //{name: "jim", age: 21, show: ?} //以上可以簡化為 let obj={ name, age, show(){ console.log(name,age) } }
同名的key和value我們可以省略成只寫一個,對于函數(shù)我們可以省略function
字符串let str="http://www.jim.com/index.html" //不存在,瞎寫的 //startsWith判斷是否以某字符串開始 if (str.startsWith("http://")){ console.log("這是一個http的地址") //這是一個http的地址 } //endsWith判斷是否以某后綴結束 if (str.endsWith(".html")){ console.log("這是一個html文件") //這是一個html文件 }
很多語言的字符串都有這種判斷方法,現(xiàn)在的javascript也在不斷的完善,666
面向?qū)ο?/b>//以前 function Person(name,age){ this.name=name; this.age=age; } Person.prototype.show=function(){ //當然也可以在Person函數(shù)內(nèi)部定義,若使用箭頭函數(shù),則函數(shù)將失去效果,this指向了window對象 this.show=function(){ 函數(shù)體 } console.log(this.name,this.age) } let p=new Person("jim","21"); p.show() //jim 21 function Chil(name,age,role){ Person.call(this) this.name=name this.age=age //可以直接將參數(shù)寫入call函數(shù)內(nèi) this.role=role } Chil.prototype.show=Person.prototype.show 不寫的話用不到show函數(shù),當然這只是一種方式 let c=new Chil("han","23","student") c.show() //es6 class Person{ constructor(name,age){ this.name=name this.age=age } show(){ console.log(this.name,this.age) } } let p=new Person("jim",23) p.show() //jim 23 class Chil extends Person{ constructor(name,age,role){ super(name,age) this.role=role } } let c=new Chil("han","23","student") c.show() han 23
使用class來定義類,constructor定義構造函數(shù)super實現(xiàn)對基類構造的調(diào)用,還有extends的繼承,都借鑒了java等語言,使js語法變得更易讀,易編寫。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/117121.html
摘要:更新了個版本,最新正式版是語言的下一代標準,早已在年月正式發(fā)布?;静恢С忠苿佣藶g覽器對的支持情況版起便可以支持的新特性。比較通用的工具方案有,,,等。 1、ECMAScript是什么? 和 JavaScript 有著怎樣的關系? 1996 年 11 月,Netscape 創(chuàng)造了javascript并將其提交給了標準化組織 ECMA,次年,ECMA 發(fā)布 262 號標準文件(ECMA-...
摘要:的翻譯文檔由的維護很多人說,阮老師已經(jīng)有一本關于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。 JavaScript Promise 迷你書(中文版) 超詳細介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...
摘要:語法校驗會給出警告當你仍在使用或不通過任何關鍵字聲明變量時。但是如果腳本中還有其他的普通導出,就會得到非常奇怪的結果這個坑爹的情況目前還沒有任何好的解決方案。 我在多年前愛上了coffeScript。對于javaScript,我一直保持著深沉的愛,也十分高興得看到node.js的快速發(fā)展,但是作為一個有python背景的程序員,我更喜歡coffeeScript的簡練語法。 在任何一個活...
摘要:但是在中,可以通過關鍵字來實現(xiàn)類的繼承的使用可以使得繼承意義更加明確并且值得一提的是,如果你使用來定義的組件,那么可以在類的構造器里面,用簡單的的聲明方式來替代方法。 原文:The 10 min ES6 course for the beginner React Developer譯者:Jim Xiao 著名的80/20定律可以用來解釋React和ES6的關系。因為ES6增加了超過75...
閱讀 3032·2021-11-24 09:39
閱讀 2271·2021-10-08 10:05
閱讀 2761·2021-09-24 13:52
閱讀 1579·2021-09-22 15:07
閱讀 598·2019-08-30 15:55
閱讀 1816·2019-08-30 15:53
閱讀 698·2019-08-30 15:44
閱讀 3124·2019-08-30 11:20