ES6的基本使用

ES6的一些基本使用

變量聲明

var let 都可用於聲明變量.

區別:1、let:只在let命令所在代碼塊內有效

​ 2、let 不存在變量提升(內部影響不到外部)

    var b = [];
    for(var j=0;j<10;j++){
        let d=j;
        b[j]=function(){
            console.log(d);
        };
    }
    b[3]() //3

3、let 不允許在相同作用於重複聲明

ES5只有全局作用域和函數作用域

ES6引入了塊級作用域的概念 作用域塊和塊之間不受影響
const 也可以聲明變量,但是聲明的是常量,一旦聲明,常量的值就不能改變。

其他和let基本一致
const 聲明對象的屬性是可以修改的,因爲const保存的是對象的地址。

跨模塊常量

export 導出
import 引入幾種方式
import * as XXX from './xxx';  //使用方式console.log(XXX.輸出的常量)

import {} from './xxx'; //引入變量

import xxx from 'xxxxx' ; //引入文件

ES6數組相關 數組解構

es6之擴展運算符 三個點(…)

var [a,b,c]=[1,2,3];

console.log(a,b,c)//1,2,3

let [head,...tail]=[1,2,3,4,5,6,7,8,9];

console.log(head) //1
console.log(tail);//[2,3,4,5,6,7,8,9]

箭頭函數

// 通過箭頭函數的寫法定義
var fnRs = (a,b)=>{
    var rs = a + b;
    alert(rs);
}        
// fnRs(1,2);
// 一個參數可以省略小括號
var fnRs2 = a =>{
    alert(a);
}
fnRs2('曹豆芽1');
 
// 箭頭函數的作用,可以綁定對象中的this(這裏的this不是window而是對象)
var person = {
    name:'tom',
    age:18,
    showName:function(){
        setTimeout(()=>{
            alert(this.name);
        },1000)            
    }
}
person.showName();

class

class Poetry {
 ``constructor(){
  ``console.log('曹豆芽1');
 ``}
}
class Person extends Poetry{
 ``constructor(){
  ``super();
  ``console.log('哈哈');
 ``}
}
let ht = new Person();

解構

var ht1 = someArray[0];
var ht2 = someArray[1];
var ht3 = someArray[2];
//解構賦值
let [ht1, ht2, ht3] = someArray; 
//還有下面例子
let [,,ht3] = [1,2,3];
console.log(ht3); //3

let [ht1,...last] = [1,2,3];
console.log(last); //[2,3]

//對象解構
let {name,age} = {name: "ht", age: "17"};
console.log(name); //ht
console.log(age); //17
//注意
let {ept1} = {};
console.log(ept1); //undefined
let {ept2} = {undefined};
console.log(ept2); //undefined
let {ept3} = {null};
console.log(ept3); //null

Promise

1.promise有三種狀態,pending、resolved、rejected,對象的狀態不受外界影響,只有異步操作的結果可以決定當前是哪一種狀態,任何其他操作無法改變這個狀態,這也是promise名字的由來,承諾其他手段無法改變狀態。
2.一旦狀態改變,這個狀態就永遠不會改變,任何時候都可以取得這個結果,狀態會由pending改爲resolved,或者pending改爲rejected。
3.promise無法取消,一旦新建就會立即執行;
4.如果不設置回調函數,內部的錯誤不會反應到外部;
5.當處於pending狀態的對象無法得知目前進展到哪一個階段;

var promise = new Promise(function(resolve, reject) {
  // ... some code

  if (/* 異步操作成功 */){
    resolve(value);//將promise的對象從未完成變成成功
  } else {
    reject(error);//將promise的對象從未完成變成失敗
  }
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章