ES6 基本用法 - daniel-qa/Vue GitHub Wiki

特性 說明 範例 常用方法 / 操作
Set (去重)儲存不重複元素,無順序 const s = new Set([1,2,2,3]); // Set {1,2,3} add(val), delete(val), has(val), clear(), size, forEach()
Map 鍵值對,鍵可以是任意類型 const m = new Map(['name','Alice'](/daniel-qa/Vue/wiki/'name','Alice')); m.get('name'); // 'Alice' set(key,val), get(key), has(key), delete(key), clear(), size, forEach()
Symbol 唯一值,可用作物件鍵,避免衝突 const id = Symbol('id'); const obj = {[id]:123}; obj[id]; // 123 N/A
let / const let: 區塊級變數;const: 不可重新賦值 let x=10; const y=[1,2]; y.push(3); N/A
解構賦值 陣列或物件快速取值 const [a,b] = [1,2]; const {name,age} = {name:'Alice',age:25}; N/A
Template string 字串插變數值,支援多行,簡單 JS 表達式 const name='Alice'; `Hello ${name}` // Hello Alice N/A
Arrow function 簡潔函數寫法 const sum=(x,y)=>x+y; N/A
  • Template string(反引號 `)

Template string 的強大之處就是:

可以直接放 JavaScript 變數

也可以放任何表達式,例如算術運算、函數呼叫、物件屬性取值…


mplate string 裡的 ${...} 只能放 JavaScript 表達式(expression),而不是完整的程式區塊或語句(statement)。

可以放的例子(expression):

const name = 'Alice';
const age = 25;

console.log(`Hello ${name}`);            // 變數
console.log(`Next year: ${age + 1}`);    // 算術運算
console.log(`Score: ${Math.max(10, 20)}`); // 函數呼叫
console.log(`First score: ${[90,80,70][0]}`); // 陣列取值

不能放的例子(statement / 完整程式區塊):

// 以下會報錯
console.log(`Check: ${if(age>18) 'adult' else 'minor'}`);
console.log(`Loop: ${for(let i=0;i<5;i++) console.log(i)}`);

💡 總結:

可以理解成「可以放簡單 JS 表達式」

不可以直接放整段 script 或語句(像宣告變數、for/if 等完整程式區塊)

如果想做邏輯判斷或多行程式,先在 Template string 外計算好值,再把結果放進 ${}


範例說明:

const name = 'Alice';
const age = 25;
const scores = [90, 80, 70];

console.log(`Hello ${name}, you are ${age} years old.`);
// Hello Alice, you are 25 years old.

console.log(`Next year, you will be ${age + 1}.`);
// Next year, you will be 26.

console.log(`Your first score is ${scores[0]}.`);
// Your first score is 90

console.log(`Random number: ${Math.floor(Math.random()*100)}`);
// Random number: 0~99 之間的數字
  • Symbol

基本概念

Symbol 是 ES6 新增的一種 原始資料類型(primitive type),像 number、string、boolean 一樣。

每個 Symbol 都是唯一的,就算描述文字相同,也不會相等。

const s1 = Symbol('id');
const s2 = Symbol('id');

console.log(s1 === s2); // false

這裡即使描述都寫 'id',s1 和 s2 還是不同的 Symbol。

用途:作為物件鍵(Property Key)

普通物件屬性鍵通常是字串,容易跟其他鍵衝突。

Symbol 作為鍵,可以確保 不會被覆蓋 或意外衝突。

const id = Symbol('id'); const obj = { [id]: 123, name: 'Alice' };

console.log(obj[id]); // 123 console.log(obj.name); // 'Alice'

注意:obj.id 是 undefined,因為 Symbol 鍵不是字串,必須用 [id] 取值。