選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP 如何做 W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

JS 教程

JS 首頁 JS 簡介 JS 何處使用 JS 輸出 JS 語句 JS 語法 JS 註釋 JS 變數 JS Let JS Const JS 運算子 JS 算術 JS 賦值 JS 資料型別 JS 函式 JS 物件 JS 物件屬性 JS 物件方法 JS 物件顯示 JS 物件建構函式 JS 事件 JS 字串 JS 字串方法 JS 字串搜尋 JS 字串模板 JS 數字 JS BigInt JS 數字方法 JS 數字屬性 JS 陣列 JS 陣列方法 JS 陣列搜尋 JS 陣列排序 JS 陣列迭代 JS 陣列 Const JS 日期 JS 日期格式 JS 日期獲取方法 JS 日期設定方法 JS Math JS Random JS 布林值 JS 比較 JS If Else JS Switch JS For 迴圈 JS For In 迴圈 JS For Of 迴圈 JS While 迴圈 JS Break JS 可迭代物件 JS Sets JS Set 方法 JS Maps JS Map 方法 JS Typeof JS 型別轉換 JS 解構 JS 位運算 JS RegExp JS 優先順序 JS 錯誤 JS 作用域 JS 提升 JS 嚴格模式 JS this 關鍵字 JS 箭頭函式 JS 類 JS 模組 JS JSON JS 除錯 JS 風格指南 JS 最佳實踐 JS 錯誤 JS 效能 JS 保留字

JS 版本

JS 版本 JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS 2019 JS 2020 JS 2021 JS 2022 JS 2023 JS 2024 JS IE / Edge JS 歷史

JS 物件

物件定義 物件原型 物件方法 物件屬性 物件 Get / Set 物件保護

JS 函式

函式定義 函式引數 函式呼叫 函式 Call 函式 Apply 函式 Bind 函式閉包

JS 類

類入門 類繼承 類靜態

JS 非同步

JS 回撥 JS 非同步 JS Promises JS Async/Await

JS HTML DOM

DOM 入門 DOM 方法 DOM Document DOM 元素 DOM HTML DOM 表單 DOM CSS DOM 動畫 DOM 事件 DOM 事件監聽器 DOM 導航 DOM 節點 DOM 集合 DOM 節點列表

JS Browser BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS Web APIs

Web API 入門 Web 表單 API Web History API Web Storage API Web Worker API Web Fetch API Web Geolocation API

JS AJAX

AJAX 入門 AJAX XMLHttp AJAX Request AJAX Response AJAX XML 檔案 AJAX PHP AJAX ASP AJAX 資料庫 AJAX 應用 AJAX 示例

JS JSON

JSON 入門 JSON 語法 JSON vs XML JSON 資料型別 JSON 解析 JSON Stringify JSON 物件 JSON 陣列 JSON 伺服器 JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery 選擇器 jQuery HTML jQuery CSS jQuery DOM

JS Graphics

JS Graphics JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

JS 示例

JS 示例 JS HTML DOM JS HTML 輸入 JS HTML 物件 JS HTML 事件 JS 瀏覽器 JS 編輯器 JS 練習 JS 測驗 JS 網站 JS 面試準備 JS Bootcamp JS 證書

JS 參考

JavaScript 物件 HTML DOM 物件


Javascript ES6

ECMAScript 2015 是 JavaScript 的第二次重大修訂。

ECMAScript 2015 也稱為 ES6 和 ECMAScript 6。

本章介紹 ES6 的最重要的特性。

ES6 中的新特性


ES6 (2015) 的瀏覽器支援

自 2017 年 6 月起,所有現代瀏覽器都完全支援 ES6

Chrome
51
Edge
15
Firefox
54
Safari
10
Opera
38
2016 年 5 月 2017 年 4 月 2017 年 6 月 2016 年 9 月 2016 年 6 月

Internet Explorer 不支援 ES6。


JavaScript let

let 關鍵字允許您宣告一個具有塊級作用域的變數。

示例

var x = 10;
// 這裡 x 是 10
{
  let x = 2;
  // 這裡 x 是 2
}
// 這裡 x 是 10
自己動手試一試 »

有關 let 的更多資訊,請參閱本章:JavaScript Let


JavaScript const

const 關鍵字允許您宣告一個常量(一個具有常量值的 JavaScript 變數)。

常量類似於 let 變數,但值不能被更改。

示例

var x = 10;
// 這裡 x 是 10
{
  const x = 2;
  // 這裡 x 是 2
}
// 這裡 x 是 10
自己動手試一試 »

有關 const 的更多資訊,請參閱本章:JavaScript Const


箭頭函式

箭頭函式允許使用簡短的語法編寫函式表示式。

您不需要 function 關鍵字、return 關鍵字和花括號

示例

// ES5
var x = function(x, y) {
   return x * y;
}

// ES6
const x = (x, y) => x * y;
自己動手試一試 »

箭頭函式沒有自己的 this。它們不適合定義物件方法

箭頭函式不會被提升。它們必須在使用之前定義。

使用 const 比使用 var 更安全,因為函式表示式始終是一個常量值。

只有當函式是單個語句時,您才可以省略 return 關鍵字和花括號。因此,始終保留它們可能是一個好習慣

示例

const x = (x, y) => { return x * y };
自己動手試一試 »

在以下章節中瞭解有關箭頭函式的更多資訊:JavaScript 箭頭函式


物件解構

解構賦值可以輕鬆地將陣列值和物件屬性分配給變數。

示例

// 建立一個物件
const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  eyeColor: "blue"
};

// 解構賦值
let { firstName, age } = person;
自己動手試一試 »

注意

解構物件時,必須為變數使用與相應物件鍵(名稱)相同的名稱。

鍵(名稱)的順序無關緊要。


陣列解構

解構賦值可以輕鬆地將陣列值和物件屬性分配給變數。

示例

// 建立一個數組
const fruits = ["Banana", "Orange", "Apple", "Mango"];

// 解構賦值
let [fruit1, fruit2] = fruits;
自己動手試一試 »

擴充套件 (...) 運算子

... 運算子將可迭代物件(如陣列)擴充套件為更多元素

示例

const q1 = ["Jan", "Feb", "Mar"];
const q2 = ["Apr", "May", "Jun"];
const q3 = ["Jul", "Aug", "Sep"];
const q4 = ["Oct", "Nov", "May"];

const year = [...q1, ...q2, ...q3, ...q4];
自己動手試一試 »

... 運算子可用於將可迭代物件擴充套件為函式呼叫的更多引數

示例

const numbers = [23,55,21,87,56];
let maxValue = Math.max(...numbers);
自己動手試一試 »


For/Of 迴圈

JavaScript for/of 語句迴圈遍歷可迭代物件的

for/of 允許您遍歷可迭代的資料結構,如陣列、字串、Map、NodeList 等。

for/of 迴圈具有以下語法

for (variable of iterable) {
  // 要執行的程式碼塊
}

variable - 每次迭代,下一個屬性的值都會分配給該變數。變數可以使用 constletvar 宣告。

iterable - 具有可迭代屬性的物件。

迴圈遍歷陣列

示例

const cars = ["BMW", "Volvo", "Mini"];
let text = "";

for (let x of cars) {
  text += x + " ";
}
自己動手試一試 »

迴圈遍歷字串

示例

let language = "JavaScript";
let text = "";

for (let x of language) {
    text += x + " ";
}
自己動手試一試 »

在以下章節中瞭解更多資訊:JavaScript For/In/Of 迴圈


JavaScript Maps

能夠使用物件作為鍵是 Map 的一個重要特性。

示例

const fruits = new Map([
["apples", 500],
["bananas", 300],
["oranges", 200]
]);
自己動手試一試 »

在以下章節中瞭解更多關於 Map 物件,以及 Map 和 Array 之間的區別:JavaScript Maps


JavaScript Sets

示例

// 建立一個 Set
const letters = new Set();

// 新增一些值到 Set
letters.add("a");
letters.add("b");
letters.add("c");
自己動手試一試 »

在以下章節中瞭解更多關於 Set 物件:JavaScript Sets


JavaScript 類

JavaScript 類是 JavaScript 物件的模板。

使用 class 關鍵字建立類。

始終新增一個名為 constructor() 的方法

語法

class ClassName {
  constructor() { ... }
}

示例

class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
}

上面的示例建立了一個名為“Car”的類。

該類有兩個初始屬性:“name”和“year”。

JavaScript 類不是一個物件。

它是一個 JavaScript 物件的模板


使用類

當您有一個類時,您可以使用該類來建立物件

示例

const myCar1 = new Car("Ford", 2014);
const myCar2 = new Car("Audi", 2019);

自己動手試一試 »

在以下章節中瞭解更多關於類:JavaScript Classes


JavaScript Promises

Promise 是一個 JavaScript 物件,它連線了“產生程式碼”和“消費程式碼”。

“產生程式碼”可能需要一些時間,“消費程式碼”必須等待結果。

Promise 語法

const myPromise = new Promise(function(myResolve, myReject) {
// "產生程式碼"(可能需要一些時間)

  myResolve(); // 成功時
  myReject();  // 出錯時
});

// "消費程式碼"(必須等待 Promise 履行)。
myPromise.then(
  function(value) { /* 成功時的程式碼 */ },
  function(error) { /* 發生錯誤時的程式碼 */ }
);

使用 Promise 的示例

const myPromise = new Promise(function(myResolve, myReject) {
  setTimeout(function() { myResolve("I love You !!"); }, 3000);
});

myPromise.then(function(value) {
  document.getElementById("demo").innerHTML = value;
});

自己動手試一試 »

在以下章節中瞭解更多關於 Promise 的資訊:JavaScript Promises


Symbol 型別

JavaScript Symbol 是一個原始資料型別,就像 Number、String 或 Boolean 一樣。

它代表一個唯一的“隱藏”識別符號,任何其他程式碼都無法意外訪問。

例如,如果不同的編碼人員想向屬於第三方程式碼的 person 物件新增 person.id 屬性,他們可能會混淆彼此的值。

使用 Symbol() 建立唯一的識別符號可以解決此問題

示例

const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  eyeColor: "blue"
};

let id = Symbol('id');
person[id] = 140353;
// 現在 person[id] = 140353
// 但 person.id 仍然是 undefined
自己動手試一試 »

注意

Symbol 始終是唯一的。

如果您建立了兩個具有相同描述的 Symbol,它們將具有不同的值

Symbol("id") == Symbol("id"); // false

預設引數值

ES6 允許函式引數具有預設值。

示例

function myFunction(x, y = 10) {
  // 如果未傳遞 y 或傳遞 undefined,則 y 為 10
  return x + y;
}
myFunction(5); // 將返回 15
自己動手試一試 »

函式剩餘引數

rest 引數 (...) 允許函式將不定數量的引數視為一個數組

示例

function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
自己動手試一試 »

String.includes()

includes() 方法如果在字串中包含指定值,則返回 true,否則返回 false

示例

let text = "Hello world, welcome to the universe.";
text.includes("world")    // 返回 true
自己動手試一試 »

String.startsWith()

startsWith() 方法如果字串以指定值開頭,則返回 true,否則返回 false

示例

let text = "Hello world, welcome to the universe.";

text.startsWith("Hello")   // 返回 true
自己動手試一試 »

String.endsWith()

endsWith() 方法如果字串以指定值結尾,則返回 true,否則返回 false

示例

var text = "John Doe";
text.endsWith("Doe")    // 返回 true
自己動手試一試 »

Array entries()

示例

建立陣列迭代器,然後迭代鍵/值對

const fruits = ["Banana", "Orange", "Apple", "Mango"];
const f = fruits.entries();

for (let x of f) {
  document.getElementById("demo").innerHTML += x;
}
自己動手試一試 »

entries() 方法返回一個包含鍵/值對的陣列迭代器物件

[0, "香蕉"]
[1, "橙子"]
[2, "蘋果"]
[3, "芒果"]

entries() 方法不會改變原始陣列。


Array.from()

Array.from() 方法從任何具有 length 屬性的物件或任何可迭代物件返回一個 Array 物件。

示例

從字串建立陣列

Array.from("ABCDEFG")   // 返回 [A,B,C,D,E,F,G]
自己動手試一試 »

Array keys()

keys() 方法返回一個包含陣列鍵的陣列迭代器物件。

示例

建立一個 Array Iterator 物件,包含陣列的鍵

const fruits = ["Banana", "Orange", "Apple", "Mango"];
const keys = fruits.keys();

let text = "";
for (let x of keys) {
  text += x + "<br>";
}
自己動手試一試 »

Array find()

find() 方法返回透過測試函式的第一個陣列元素的

此示例查詢(返回第一個大於 18 的元素的

示例

const numbers = [4, 9, 16, 25, 29];
let first = numbers.find(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
自己動手試一試 »

請注意,該函式接受 3 個引數

  • 專案值
  • 專案索引
  • 陣列本身

Array findIndex()

findIndex() 方法返回透過測試函式的第一個陣列元素的索引

此示例查詢第一個大於 18 的元素的索引

示例

const numbers = [4, 9, 16, 25, 29];
let first = numbers.findIndex(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
自己動手試一試 »

請注意,該函式接受 3 個引數

  • 專案值
  • 專案索引
  • 陣列本身

新的 Math 方法

ES6 向 Math 物件添加了以下方法

  • Math.trunc()
  • Math.sign()
  • Math.cbrt()
  • Math.log2()
  • Math.log10()

Math.trunc() 方法

Math.trunc(x) 返回 x 的整數部分

示例

Math.trunc(4.9);    // 返回 4
Math.trunc(4.7);    // 返回 4
Math.trunc(4.4);    // 返回 4
Math.trunc(4.2);    // 返回 4
Math.trunc(-4.2);    // 返回 -4
自己動手試一試 »

Math.sign() 方法

Math.sign(x) 返回 x 是負數、零還是正數

示例

Math.sign(-4);    // 返回 -1
Math.sign(0);    // 返回 0
Math.sign(4);    // 返回 1
自己動手試一試 »

Math.cbrt() 方法

Math.cbrt(x) 返回 x 的立方根

示例

Math.cbrt(8);    // 返回 2
Math.cbrt(64);    // 返回 4
Math.cbrt(125);    // 返回 5
自己動手試一試 »

Math.log2() 方法

Math.log2(x) 返回 x 的以 2 為底的對數

示例

Math.log2(2);    // 返回 1
自己動手試一試 »

Math.log10() 方法

Math.log10(x) 返回 x 的以 10 為底的對數

示例

Math.log10(10);    // 返回 1
自己動手試一試 »

新的 Number 屬性

ES6 向 Number 物件添加了以下屬性

  • EPSILON
  • MIN_SAFE_INTEGER
  • MAX_SAFE_INTEGER

EPSILON 示例

let x = Number.EPSILON;
自己動手試一試 »

MIN_SAFE_INTEGER 示例

let x = Number.MIN_SAFE_INTEGER;
自己動手試一試 »

MAX_SAFE_INTEGER 示例

let x = Number.MAX_SAFE_INTEGER;
自己動手試一試 »

Number.isInteger() 方法

Number.isInteger() 方法如果引數是整數,則返回 true

示例

Number.isInteger(10);        // 返回 true
Number.isInteger(10.5);      // 返回 false
自己動手試一試 »

Number.isSafeInteger() 方法

安全整數是可以精確表示為雙精度數字的整數。

Number.isSafeInteger() 方法如果引數是安全整數,則返回 true

示例

Number.isSafeInteger(10);    // 返回 true
Number.isSafeInteger(12345678901234567890);  // 返回 false
自己動手試一試 »

安全整數是從 -(253 - 1) 到 +(253 - 1) 的所有整數。
這是安全的:9007199254740991。這是不安全的:9007199254740992。


新的全域性方法

ES6 添加了 2 個新的全域性數字方法

  • isFinite()
  • isNaN()

isFinite() 方法

全域性 isFinite() 方法如果引數是 InfinityNaN,則返回 false

否則返回 true

示例

isFinite(10/0);       // 返回 false
isFinite(10/1);       // 返回 true
自己動手試一試 »

isNaN() 方法

全域性 isNaN() 方法如果引數是 NaN,則返回 true。否則返回 false

示例

isNaN("Hello");       // 返回 true
自己動手試一試 »

模組

模組有兩種不同的匯入方式

從命名匯出匯入

從檔案 person.js 匯入命名匯出

import { name, age } from "./person.js";

自己動手試一試 »

從預設匯出匯入

從檔案 message.js 匯入預設匯出

import message from "./message.js";

自己動手試一試 »

在以下章節中瞭解更多關於模組的資訊:JavaScript 模組


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援