javascript,ES6最常用語法

風度翩翩的香菇發表於2020-11-19

ES6常用特性
let,const
ES5只有全域性作用域和函式作用域,沒有塊級作用域,let則為JavaScript新增了塊級作用域,用它所宣告的變數,只在let命令所在的程式碼塊內有效。

{
    {
        let a = 1;
        let b = 1;
        console.log(a);// 1
        console.log(b);// 1
    }
    console.log(a);// a is not defined
    console.log(b);// 1
    for (let i = 0; i < 10; i++) {
        //...
    }
    console.log(i); // i is not defined
    for (var j = 0; j < 10; j++) {
        //...
    }
    console.log(j);//10
}

const也用來宣告常量, 一旦宣告,常量的值就不能改變。

const PI = 3.1415926
PI = 3.14;// Assignment to constant variable

預設引數
ES6之前處理預設引數,基本使用以下方法

function toDecimal(number, precision) {
    var precision = precision||2;
    var temp = 1;
    for (let i = 0; i < precision; i++) {
        temp = temp * 10;
    }
    return Math.round(number * temp)/temp;
}

ES6則可以採用如下寫法

function toDecimal(number, precision = 2) {
    var temp = 1;
    for (let i = 0; i < precision; i++) {
        temp = temp * 10;
    }
    return Math.round(number * temp)/temp;
}

模板物件
ES6之前拼接字串物件,一般使用如下方式

var firstName = 'Fei';
var lastName = 'Zhang';
console.log('your name is ' + firstName + ' ' + lastName + '.');

ES6中可以使用${}的方式來做

var firstName = 'Fei';
var lastName = 'Zhang';
console.log('your name is ${firstName} %{lastName}.');

多行字串
ES6之前字串換行,一般使用\n

var strTemp = 'abcdefg\n'+
    'hijklmn\n';
console.log(strTemp);

ES6只需要反引號即可

var strTemp = ·abcdefg
    hijklmn·;
console.log(strTemp);

箭頭函式=>
=>可以是function寫法簡潔清晰很多

function(i){ return i + 1; } // ES5
(i) => i + 1; // ES6

function(x, y) {
    x++;
    y--;
    return x + y;
}
(x, y) => {x++; y--; return x+y}

當使用匿名函式時,不需要額外定義變數指向this

// ES5
var obj = this;
foo(function(){
    obj.foo1();
});
// ES6
foo(()=>{this.foo1();});

解構(Destructuring)
ES6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值。

let cat = 'cat'
let dog = 'dot'
let zoo = {cat: cat, dog: dog} // es5
let zoo1 = {cat, dog} // es6
// 也可以反過來寫
let {cat1, dog1} = zoo;

rest引數(…變數名)
rest引數搭配的變數是一個陣列,可以使用陣列的一切操作

function sum(...values){
    let temp = 0;
    for (var value of values){
        temp = temp+ value;
    }
    return temp;
}