經常使用的ES6

1 let 和 const

做用域: 只在聲明指令的塊級做用域內有效。
let所聲明的變量能夠改變,值和類型均可以改變,沒有限制。編程

let a = 123
a = 456 // 正確,能夠改變
let b = [123]
b = [456] // 正確,能夠改變

const聲明的變量不可改變值,這意味着const一旦聲明變量必須當即初始化,不能之後賦值。json

const a ;//報錯,一旦聲明變量,應該當即賦值!!
const b = 2;
b = 3//報錯,由於定義常量以後不能成從新賦值!!

對於複合類型的變量,如數組和對象,變量名不指向數據,而是指向數據所在的地址。const命令只是保證變量名指向的地址不變,並不保證該地址的數據不變,因此將一個對象聲明爲常量必須很是當心數組

const names = [];
names = [1,2,3] //出錯,由於變量names指向的地址不能發生改變,應始終指向[]所在的地址!!![1,2,3]與[]不是同一個地址
const names = [];
names = [1,2,3] //出錯,由於變量names指向的地址不能發生改變,應始終指向[]所在的地址!!![1,2,3]與[]不是同一個地址
//不會報錯,由於names指向的地址不變,改變的只是內部數據

const names = [];
names[0] = 1
names[1] = 2
names[2] = 3

2 數組

一次性聲明多個變量:數據結構

let [a, b, c] = [1, 2, 3];
console.log(a) // 1
console.log(b) // 2
console.log(c) // 3

3 對象的合併:

Object.assign()方法用於對象的合併,將原對象(source)的全部可枚舉屬性複製到目標對象(target)app

const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}

Object.assign方法的第一個參數是目標對象,後面的參數都是源對象。異步

注意,若是目標對象與源對象有同名屬性,或多個源對象有同名屬性,則後面的屬性會覆蓋前面的屬性。異步編程

const target = { a: 1, b: 1 };

const source1 = { b: 2, c: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
Object.assign 方法實行的是淺拷貝,而不是深拷貝。
const obj1 = {a: {b: 1}};
const obj2 = Object.assign({}, obj1);

obj1.a.b = 2;
obj2.a.b // 2

4 Promise對象

Promise 是異步編程的一種解決方案。函數

5 import 和 export

import 導入模塊、export 導出模塊spa

// example2.js  // 導出默認, 有且只有一個默認
export default const example2 = {
  name : 'my name',
  age : 'my age',
  getName  = function(){  return 'my name' }
}
//所有導入 // 名字能夠修改
import people from './example2.js'

-------------------我是一條華麗的分界線---------------------------

// example1.js // 部分導出
export let name  = 'my name'
export let age  = 'my age'
export let getName  = function(){ return 'my name'}

// 導入部分 // 名字必須和 定義的名字同樣。
import  {name, age} from './example1.js'

//有一種特殊狀況,即容許你將整個模塊看成單一對象進行導入
//該模塊的全部導出都會做爲對象的屬性存在code

import * as example from "./example1.js"
console.log(example.name)
console.log(example.age)
console.log(example.getName())

-------------------我是一條華麗的分界線---------------------------

// example3.js  // 有導出默認, 有且只有一個默認,// 又有部分導出
export default const example3 = {
  birthday : '2018 09 20'
}
export let name  = 'my name'
export let age  = 'my age'
export let getName  = function(){ return 'my name'}

// 導入默認與部分
import example3, {name, age} from './example1.js'

6 字符串拼接

Es6的這種新的「字符串拼接」方法比較簡單,沒有繁瑣的加號和引號,只須要在所須要的字符串「邊界」加上``便可。

var name = 'Datura';
    var age = 18;
    var sex = 'nü';
    var hobby = '敲代碼';
    var str1 = `我是${name},今年${age}歲,性別${sex}的了,愛好${hobby}`; //注意此處有兩個「 `` 」
    var str2 = '我是'+name+',今年'+age+'歲,性別'+sex+',愛好'+hobby+''; //這個是原來的寫法
    alert(st1r);

7 Map對象

ES6提供了新的數據結構Map,Map結構提供了「值—值」的對應,是一種更完善的Hash結構實現。
咱們來新建一個Map對象,併爲其賦值:

let map = new Map();
map.set('a','apple');
map.set('b','banana');
console.log(map); //   Map {"a" => "apple", "b" => "banana"}

clipboard.png

1 獲取map裏面的值:
獲取Map對象裏面的值map.get(‘b’): banana

2 刪除Map對象裏面的值map.delete()

3 若是咱們只須要map裏面的值:

for(let name of map.values()){
    console.log(name);  ////apple   banana
  }

4 若是咱們只須要map裏面的key

for(let name of map.keys()){
    console.log(name);  //a b
  }

7 for 循環

一: for in循環

//循環數組
    let arr = [12,5,8];
    for(let i = 0;i<arr.length;i++){
        console.log(i);    //0 1  2
        console.log(arr[i]);  //12  5  8
    }

    let arr = [12,5,8];
    for(let i in arr){
        console.log(i);      //0 1  2
        console.log(arr[i]);  //12  5  8
    }
    //循環json數據
    let json = {a:12,b:5,c:8};
    for(let name in json){
      console.log(name);  //a  b c
      console.log(json[name]);  //12 5 8
    }

二: for of循環

//循環數組
let arr = [12,5,8];
for(let name of arr){
    console.log(name);  // 12 5 8
}
//循環json數據
let json = {a:'apple',b:'banana'};
for(let name of json){
    console.log(name);
}
//報錯,由於不能用for ...of...來循環json數據

8 箭頭函數

咱們先回顧下ES5函數定義與調用:

var show = function(){
        alert(12);  
    };
    show();   // 12
const show = () =>{
        alert(12);  
    };
    show();  // 12 
//我的理解:這裏將function關鍵字去掉而後在「()」後面加一個「=>」
相關文章
相關標籤/搜索