目錄
ES6比ES5新增的特性
let、const:" >let、const:
解構賦值:" >解構賦值:
#展開運算子:" >#展開運算子:
Set 物件允許你儲存任何類型的唯一值,無論是原始值或是物件參考。 " >Set 本身就是一個建構函數,用來產生 Set 資料結構。 Set 物件允許你儲存任何類型的唯一值,無論是原始值或是物件參考。
任何值(物件或原始值) 都可以當作一個鍵或一個值。 " >任何值(物件或原始值) 都可以當作一個鍵或一個值。
对象的方法:
字符串新增方法:" >字符串新增方法:
模版字符串:" >模版字符串:
对象新增方法:" >对象新增方法:
babel编译器:" >babel编译器:
首頁 web前端 前端問答 es6比es5新增了什麼

es6比es5新增了什麼

Oct 21, 2022 pm 07:08 PM
javascript es6 es5

新增內容:1、let、const關鍵字,用於聲明變量,支援區塊級作用域,擁有暫時性死區;2、解構賦值,是針對數組或物件進行模式匹配,然後對其中的變數進行賦值的意思;3、展開運算符,可用於將集合和數組中的元素擴展為單個單獨的元素;4、Set對象,一種新的資料結構,類似於數組,但是成員的值都是唯一的,沒有重複的值;5、建構子的方法Array.from()、Array.of()。

es6比es5新增了什麼

本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

ES6比ES5新增的特性

let、const:

let和const支援區塊級作用域,擁有暫時性死區(必須先聲明,再使用,不支援變數提升);

const是常數,宣告時必須賦值,當賦值為基本型別時,不能改變它的值;當賦值為引用型別時,不能改變它的引用,但是可以對引用型別進行操作,如數組的push、物件的屬性增刪改

解構賦值:

es6允許依照一定的模式,從陣列或物件中提取值,給變數賦值,稱為解構賦值。

解構賦值在程式碼書寫上簡單易懂,語意清晰明了,方便對複雜物件中資料欄位的取得。

物件的解構賦值:

let obj = {
  a: 1,
  b: 2
};
let {a, b, c} = obj; // 大括号中的变量名必须和obj的属性名一致
console.log(a, b, c);

// 输出:
// a: 1
// b: 2
// c: undefined
登入後複製

陣列的解構賦值:(字串一樣)

let arr = ['a', 'b', 'c'];
let [e, f] = arr;	// 中括号中的变量按数组中元素的顺序被赋值
console.log(e, f);

// 输出:
// e: 'a'
// f: 'b'

// 快速交换两个变量值
let a = 1, b = 2;
[a, b] = [b, a];
登入後複製

#展開運算子:

由三個點( ...) 表示,JavaScript 擴充運算子是在ES6 中引入的。它可用於將集合和數組中的元素擴展為單一單獨的元素。

    擴充運算子可用於建立和複製陣列和物件、將陣列作為函數參數傳遞、從陣列中刪除重複項等等。
  • 擴充運算子只能用於可迭代物件。它必須在可迭代物件之前使用,沒有任何分隔。例如:

    console.log(...arr);
    登入後複製
  • 陣列:

    let arr1 = [1, 2, 3, 4];
    let arr2 = ['a', 'b', ...arr1, 'c'];
    console.log(arr2);
    
    // 输出:
    // ['a', 'b', 1, 2, 3, 4, 'c']
    登入後複製
  • #物件:

    let obj1 = {
      a: 1,
      b: 2
    };
    let obj2 = {
      ...obj1,
      c: 3,
      d: 4
    };
    console.log(obj2);
    
    // 输出:
    // {a: 1, b: 2, c: 3, d: 4}
    登入後複製
  • #剩餘參數處理:

  • 陣列:
  • let arr = [1, 2, 3, 4, 5];
    let [a, b, ...c] = arr;	// 将arr后面所有的剩余参数放入c中
    console.log(a, b, c);
    
    // 输出:
    // a: 1
    // b: 2
    // c: [3, 4, 5]
    登入後複製

    物件:

    let obj = {
      a: 1,
      b: 2,
      c: 3,
      d: 4
    };
    let {a, b, ...c} = obj;
    console.log(a, b, c);
    
    // 输出:
    // a: 1
    // b: 2
    // c: {c: 3, d: 4}
    
    // 对象的复制(不是传地址)
    let obj2 = {...obj};
    登入後複製

#Set物件:

Set是ES6提供的一種新的資料結構,類似數組,但是成員的值都是唯一的,沒有重複的值。

Set 本身就是一個建構函數,用來產生 Set 資料結構。 Set 物件允許你儲存任何類型的唯一值,無論是原始值或是物件參考。

Set 中的元素只會出現一次,即 Set 中的元素是唯一的。

  • 另外,NaN 和 undefined 都可以儲存在 Set 中,NaN 之間被視為相同的值(儘管 NaN !== NaN)。

  • Set 函數可以接受一個陣列(或具有 iterable 介面的其他資料結構)作為參數,用來初始化。

陣列去重:

let arr = [2, 1, 2, 1, 3, 4, 4, 5];
let s = new Set(arr);
arr = [...s];
// arr: [2, 1, 3, 4, 5]
登入後複製
Set方法:

let s = new Set([1, 1, 2, 3, 'a']);
// 得到Set元素个数:
s.size;
// 清空集合
s.clear();
// 删除集合中的某个值,返回操作是否成功
s.delete('a');
// 查看集合是否包含某个值
s.has('a');
// 添加一项,返回集合本身的引用
s.add('b');
登入後複製
  • Map物件:ES6 提供了Map 資料結構。它類似於對象,也是鍵值對的集合,但是“鍵”的範圍不限於字串,各種類型的值(包括對象)都可以當作鍵。也就是說,Object 結構提供了「字串—值」的對應,Map 結構提供了「值—值」的對應,是一種更完善的 Hash 結構實作。如果你需要「鍵值對」的資料結構,Map 比 Object 更適合。

  • Map 特徵:
  • Map 物件保存鍵值對,並且能夠記住鍵的原始插入順序。

任何值(物件或原始值) 都可以當作一個鍵或一個值。

let arr = [
  ['a', 1],
  ['b', 2],
  ['c', 3]
];
let m = new Map(arr);
// m: {'a' => 1, 'b' => 2, 'c' => 3}
登入後複製

Map方法:
// 清空Map
m.clear();
// 删除某一项,返回操作是否成功
m.delete(key);
// 获取某一项的值,返回对应的val
m.get(key);
// 是否包含某一项
m.has(key);
// 添加一项,返回Map本身的引用
m.set(key, val);
登入後複製

    #函數新增內容:
  • ##箭頭函數:沒有

    this

      arguments
    • #參數預設值
    • 陣列新增方法:
    • 建構子的方法:

    把一個類別陣列轉換成真正的陣列:
  • Array.from(arrLike [, mapFunc, mapThis]);
  • 參數:

    arrLike:###類別數組#########mapFunc:###對類別數組每一項的運算函數##########mapThis:###取代###mapFunc###的###this ###指向#########另一種方法:###let arr = [...arrLike];###############將參數清單轉換為數組:#########Array.of(...items);#######
  • 检测一个对象是否是一个数组:

    Array.isArray(obj);

对象的方法:

  • arr.find(callback [, thisArg]):查找数组中满足条件的第一个元素的值

    let arr = [1, 2, 3, 4];
    let val = arr.find((item, index) => item >= 3);
    // val: 3
    let val = arr.find((item, index) => item >= 5);
    // val: undefined
    登入後複製
  • arr.findIndex(callback [, thisArg]):查找数组中满足条件的第一个元素的索引

  • 数组扁平化:

    • arr.flat([depth])

      参数:depth:指定要提取嵌套数组的结构深度,默认为1,当depth = infinity时,无论数组多少层,都提取为一维数组。

    • arr.flatMap(callback[, thisArg])

      参数:callback:对原数组的每个元素进行操作,返回新数组的元素;

      该函数值支持深度为1的扁平化

  • 数组元素填充:arr.fill(value[, start[, end]]);

    用一个固定的值填充一个数组中从起始索引到终止索引内到全部元素。不包括终止索引;不会改变数组长度

    参数:

    • value:用来填充数组元素的值;
    • start:起始索引,默认值为0;
    • end:终止索引,默认值为 arr.length ;
  • arr.includes(valueToFind[, fromIndex]):判断数组中是否包含一个指定的值

    参数:

    • valueToFind:需要查找的值
    • fromIndex:从 fromIndex 处开始向后查找

字符串新增方法:

  • str.startsWith(searchString[, position]):判断当前字符串是否以另一个给定的子字符串开头

    参数:

    • searchString:要搜索的字符串
    • position:在 str 中搜索 searchString 的开始位置,默认为0,也就是真正的字符串开头处
  • str.endsWith(searchString[, position]):判断当前字符串是否以另一个给定的子字符串结束

    参数:

    • searchString:要搜索的字符串
    • position:在str中反向搜索的开始位置,默认为 str.length
  • str.repeat(times):返回重复str字符串times次的字符串

模版字符串:

反引号:``,可以换行

插值表达式:${}

对象新增方法:

  • 简洁表示法:

    let a = 1, b = 2;
    // 原来的表示方法:
    let obj = {
      a: a,
      b: b,
      c: function() {}
    };
    // 简洁表示法:
    let obj = {
      a,
      b,
      c() {}
    };
    登入後複製
  • 属性名表达式:

    let name = "小明";
    let obj = {
      [name]: 111
    };
    console.log(obj);
    // 输出:
    // obj: {'小明': 111}
    
    // 等价于:
    let obj = {};
    obj[name] = 111;
    登入後複製
  • Object.assign(obj1, obj2, ...):将第二个参数即之后的参数对象合并到第一个参数对象中

    let obj1 = {a: 1, b: 2};
    let obj2 = {c: 3, d: 4};
    Object.assign(obj2, obj1);
    // 等价于
    obj2 = {
      ...obj1,
      ...obj2
    }
    // 等价于
    obj2 = Object.assign({}, obj1, obj2);
    登入後複製
  • Object.is(value1, value2):判断两个值是否相等(强类型)

    ===的区别:

    +0 === -0;	// true
    Object.is(+0, -0);	// false
    
    NaN === NaN; // false
    Object.is(NaN, NaN); // true
    登入後複製

babel编译器:

将es6语法编译为es5语法

【相关推荐:javascript视频教程编程视频

以上是es6比es5新增了什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript與WebSocket:打造高效率的即時影像處理系統 JavaScript與WebSocket:打造高效率的即時影像處理系統 Dec 17, 2023 am 08:41 AM

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數

See all articles