一、ECMAScript6和JAVAScript關係html
ES6是JAVAScript的規格,JavaScript是ES6的一種實現。es6
局部變量:letajax
它的用法相似於var,可是所聲明的變量,只在let命令所在的代碼塊內有效。編程
全局變量:var數組
常量:const異步
const聲明一個只讀的常量。一旦聲明,常量的值就不能改變異步編程
四、ES6定義變量的特色函數
描述:學習
變量提高:在區域內部定義的變量,在區域外部可使用,即變量能夠在聲明以前使用,值爲undefinedthis
暫時性死區:只要塊級做用域內存在let命令,它所在的變量就綁定了這個區域;再也不受外部的影響。
五、解構的基本語法
ES6容許按照必定模式,從數組和對象中提取值,對變量進行賦值,這被稱爲解構
var{變量,變量2}=對象;
例:var user={ username:"jack", password:"1234", age:"18" } jack---18
六、函數參數名默認基本語法是?
function xx(a=默認值){ } //y參數設置默認值 function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello
七、箭頭函數完整語法
var 函數名=(參數1,參數2,...)=>{ }
八、箭頭函數this指向?
this老是指向外層調用者對象。
九、模版字符串的基本語法?
var str=`html任意內容`;
第一個用途,基本的字符串格式化。將表達式嵌入字符串中進行拼接。用${}來界定
const name'lux' console.log(`hello ${name}`)//hello lux
第二個用途,在ES5時咱們經過反斜槓()來作多行字符串或者字符串一行行拼接。ES6反引號(``)直接搞定。
//es5 var msg="Hi \ man!" //es6 const template =`<div><span>hello world</span></div>`
十、Promise異步調用基本語法結構?
Promise是異步編程的一種解決方案,有了Promise對象,就能夠將異步操做以同步操做的流程表達出來,避免了層層嵌套的回調函數。
Promise完成ajax操做
... .then(res)=>{ }) .then(res)=>{ }) .catch(res)=>{ })
Promise問題場景
1)回調函數(把函數做爲參數傳遞,就叫作回調函數)
簡單說回調方法就是將一個方法func2做爲參數傳入另外一個方法func1中,當func1執行到某一步或者知足某種條件的時候才執行傳入的參數func2,例以下面的代碼段:
//當參數a大於10且參數func2是一個方法時 執行func2 function func1(a,func2){ if(a>10 && typeof func2 == 'function'){ func2() } } func1(11,function(){ console.log('this is a callback') }) 運行結果: this is a callback 注意:func2回到了func1函數中function參數函數。
2)異步操做
JavaScript也充斥着異步操做——例如ajax。
var username; setTimeout(function(){ username='linkFly'; ),1000};//1s後執行 console.log(username);//輸入undefined
一段代碼異步執行,後續的代碼卻須要等待異步代碼的結果,若是打印結果在異步代碼以前執行,就會如上面的console.log(name)同樣,輸出undefined,這並非咱們想要的效果
Promise優雅的修正了異步代碼,如今使用Promise重寫setTimeout的示例:
var username2; new Promise(function(resolve){ setTimeout(resolve,1000); }).then(function(){ username2="jack"; console.info(username2);//1秒後展現 })
這段代碼完成了和以前一樣的工做。代碼console.log(name)正確的輸出了jack
平常學習的總結,主要是爲了本身之後看,固然你們有什麼好的建議,歡迎評論留言。