菜单
×
   ❮     
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 提供支持