ES6

ES6新特性

1.1 let關鍵字

let關鍵字用來聲明變數,使用let聲明的變數有幾個特點

  1. 不允許重複使用
  2. 塊級作用域
  3. 不存在變數提升
  4. 不影響作用域鏈
       {
            let school = '尚矽谷';
            function fn(){
                console.log(school);
            }
            fn();
        }

應用場景:以後聲明變數使用 let 就對了

1.2 const關鍵字

const關鍵字用來聲明常量,有幾個特點

  1. 一定要賦初值
  2. 一般常量是用大寫(潛規則)
  3. 常量的值不能修改
  4. 塊級作用域
  5. 對於數組和對象的元素修改,不算是對常量的修改,不會報錯
 const TEAM = ['UZI','MXLG','Ming','Letme'];
 TEAM.push('Meiko');

注意: 對象屬性修改和數組元素變化不會觸發 const 錯誤

應用場景:聲明對象類型使用 const,非對象類型聲明選擇 let

1.3 變數的解構賦值

ES6 允許按照一定模式,從數組和對象中提取值,對變數進行賦值,這被稱 為解構賦值。

// 1.數組的解構賦值
    const xiao=['ss','sss','aaa'];
    let [s,d,f] = xiao;
    console.log(s);  //ss
    console.log(d);  //sss
    console.log(f);  // aaa

 

//  2.對象的解構賦值
    const people={
        name: '小明',
        age: 18,
        el: function () {
            console.log('你好啊');
        }
    }
    let {name,age,el} = people
    console.log(name); //小明
    console.log(age);  //18
    el()  //你好啊

1.4 模板字元串

模板字元串是增強版的自負床,用反引號“標識,特點:

  1. 字元串可以出現換行符
  2. 可以使用 $( 常量/變數 ) 形式輸出變數
// 1.聲明
    let str = `我也是一個字元串哦`
    console.log(str, typeof str);
    // 2.內容中可以直接換行
    let str1 = `
        <ul>
           <li>aaa</li>
           <li>bbb</li>
           <li>ccc</li>
        </ul>
    `
    // 3.變數拼接
    let lovest = '趙麗穎'
    let out = `${lovest}是我最喜歡的演員`
    console.log(out);  //趙麗穎是我最喜歡的演員

注意:當遇到字元串與變數拼接的情況使用模板字元串

1.5 簡化對象寫法

 ES6 允許在大括弧裡面,直接寫入變數和函數,作為對象的屬性和方法。這 樣的書寫更加簡潔。

let name = '小明';
let slogon = '加油
 console.log('可以提高你的技能');
}
//屬性和方法簡寫
let atguigu = {
 name,
 slogon,
 change() {
 console.log('可以改變你')
 }
};

1.6 箭頭函數

注意:

  1. 如果形參只有一個,則小括弧可以省略
  2. 函數體如果只有一條語句,則花括弧可以省略,不寫return,函數的返回值為該條語句的執行結果
  3. 箭頭函數this指向聲明時所在作用於下this的值(當前層的外層作用域的this值)
  4. 箭頭函數不能作為構造函數實例化
  5. 不能使用arguments
//省略小括弧和花括弧
let fn3 = score => score * 20
//不能作為構造實例化對象
let Person = (name, age) => {
this.name = name;
this.age = age;
}
let me = new Person('xiao',30);
console.log(me); //錯誤

//this 指向
let school = {
name: '尚矽谷',
getName(){
        let fn5 = () => {
console.log(this); //指向school
}
fn5();
}
};

箭頭函數適合與this無關的回調。定時器、數組的方法回調

不適合與this有關的回調。事件回調,對象的方法

 

const arr = [1,6,9,10,12,17];
const result = arr.filter(item => item%2===0);
console.log(result)  //[6,10,12]

 

 

 

1.7 ES6允許給函數參數賦初始值

 // 1.形參初始值,具有默認值的參數,一般為只要靠後(潛規則)
    function add(a,b,c=10) {
        return a+b+c;
    }
    console.log(add(1, 2, 3))
    // 2.與解構賦值結合
    //普通寫法
    // function connect(options) {
    //     let host = options.host;
    //     let username = options.username;
    //     console.log(host);
    //     console.log(username);
    // }

    //ES6與解構賦值結合寫法
    function connect({host,username}){
        console.log(host);
        console.log(username);
    }
    connect({
        host: 'localhost',
        username: 'root',
    })