前言:臨時接手前端小程序,需補充下ES6用法
一.let 與 const
- let 聲明的變量只在 let 命令所在的代碼塊內有效。
- const 聲明一個只讀的常量,一旦聲明,常量的值就不能改變。
- for 循環計數器很適合用 let
- const 聲明一個只讀變量,聲明之後不允許改變。意味着,一旦聲明必須初始化,否則會報錯
二.解構賦值
- 解構賦值是對賦值運算符的擴展。
1. 數組模型解構
- 基本
let [a, b, c] = [1, 2, 3];
// a = 1
// b = 2
// c = 3
- 解構默認值:當解構模式有匹配結果,且匹配結果是 undefined 時,會觸發默認值作爲返回結果
let [a = 3, b = a] = []; // a = 3, b = 3
let [a = 3, b = a] = [1]; // a = 1, b = 1
let [a = 3, b = a] = [1, 2]; // a = 1, b = 2
2. 對象模型解構
- 基本
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
// foo = 'aaa'
// bar = 'bbb'
let { baz : foo } = { baz : 'ddd' };
// foo = 'ddd'
- 解構默認值
let {a = 10, b = 5} = {a: 3};
// a = 3; b = 5;
let {a: aa = 10, b: bb = 5} = {a: 3};
// aa = 3; bb = 5;
三. Symbol
四. Map和Set
五. Reflect 與 Proxy
- Proxy 與 Reflect 是 ES6 爲了操作對象引入的 API 。
- Proxy 可以對目標對象的讀取、函數調用等操作進行攔截,然後進行操作處理。它不直接操作對象,而是像代理模式,通過對象的代理對象進行操作,在進行這些操作時,可以添加一些需要的額外操作
六. 字符串
- 子串的識別
- 字符串重複
- 字符串補全(拼接)
- 模板字符串
//字符串插入變量和表達式。
let name = "Mike";
let age = 27;
let info = `My Name is ${name},I am ${age+1} years old next year.`
console.log(info);
// My Name is Mike,I am 28 years old next year.
function f(){
return "have fun!";
}
let string2= `Game start,${f()}`;
console.log(string2); // Game start,have fun!
七. 數值
八. 對象
- ES6允許對象的屬性直接寫變量,這時候屬性名是變量名,屬性值是變量值。
const age = 12;
const name = "Amy";
const person = {age, name};
person //{age: 12, name: "Amy"}
//等同於
const person = {age: age, name: name}
- 方法名可以簡寫
const person = {
sayHi(){
console.log("Hi");
}
}
person.sayHi(); //"Hi"
//等同於
const person = {
sayHi:function(){
console.log("Hi");
}
}
person.sayHi();//"Hi"
九. 數組
十.函數
- 默認參數
function fn(name,age=17){
console.log(name+","+age);
}
fn("Amy",18); // Amy,18
fn("Amy",""); // Amy,
fn("Amy"); // Amy,17
- 只有在未傳遞參數,或者參數爲 undefined 時,纔會使用默認參數,null 值被認爲是有效的值傳遞。
function fn(name,age=17){
console.log(name+","+age);
}
fn("Amy",null); // Amy,null
- 箭頭函數 :
(1) .箭頭函數提供了一種更加簡潔的函數書寫方式。基本語法是:
參數 => 函數體
(2). 基本用法
var f = (a,b) => a+b;
f(6,2); //8
var f = (a,b) => {
let result = a+b;
return result;
}
f(6,2); // 8
(3). 當箭頭函數要返回對象的時候,爲了區分於代碼塊,要用 () 將對象包裹起來
// 報錯
var f = (id,name) => {id: id, name: name};
f(6,2); // SyntaxError: Unexpected token :
// 不報錯
var f = (id,name) => ({id: id, name: name});
f(6,2); // {id: 6, name: 2}
- ES6 之前,JavaScript 的 this 對象一直很令人頭大,回調函數,經常看到 var self = this 這樣的代碼,爲了將外部 this 傳遞到回調函數中,那麼有了箭頭函數,就不需要這樣做了,直接使用 this 就行。
// 回調函數
var Person = {
'age': 18,
'sayHello': function () {
setTimeout(function () {
console.log(this.age);
});
}
};
var age = 20;
Person.sayHello(); // 20
var Person1 = {
'age': 18,
'sayHello': function () {
setTimeout(()=>{
console.log(this.age);
});
}
};
var age = 20;
Person1.sayHello(); // 18