ES6

来源:https://www.cnblogs.com/wsuyi/archive/2019/09/07/11483126.html
-Advertisement-
Play Games

1.什麼是ES6? ES的全稱是ECMAScript,ES6就是ES2016之後的一個泛稱,是由ECMA國際標準化組織制定的一項腳本語言的標準化規範。 2.ES6新增語法 1. let ES6中新增的用於聲明變數的關鍵字 特點: 1.let聲明的變數具有塊級作用域的特點,只在所處的塊級作用域有效 i ...


 

 

 

 

1.什麼是ES6?

  ES的全稱是ECMAScript,ES6就是ES2016之後的一個泛稱,是由ECMA國際標準化組織制定的一項腳本語言的標準化規範。

2.ES6新增語法

  1. let

    ES6中新增的用於聲明變數的關鍵字

    特點:

    1.let聲明的變數具有塊級作用域的特點,只在所處的塊級作用域有效

    if(true) {

      let a = 10;

    }

    console.log(a);   // a is not defined

    2.不存在變數提升

    console.log(a); //a is not defined

    let a = 10;

    3.暫時性死區

    利用let聲明的變數會綁定在當前作用域,哪怕當前作用域外有相同變數名,也不會受影響。

  2.const

    聲明常量,常量就是值(記憶體地址)不能變化的量。    

    特點:

    1.具有塊級作用域的特點

    if(true) {

      const a = 10;

    }

    console.log(a);   // a is not defined

    2. 聲明常量時必須賦值

    const p;      //Missing initializer in const declaration

    不賦值則會報錯

    3. 常量賦值後,值不能修改

 1 const p = 3;
 2 p = 100;    //Assignment to constant variable.
 3 
 4 
 5 const arr = [10,20];
 6 
 7 arr[0] = 'a';
 8 
 9 arr[1] = 'b';
10 
11 console.log(arr);    //["a","b"];
12 
13 //直接給數組重新賦值則會報錯
14 arr = ["a","b"]   //Assignment to constant variable.
常量賦值

    常量不能重新進行賦值,如果是基本數據類型,不能更改值,如果是複雜數據類型,不能更改地址值。

  3.解構賦值

    在ES6中允許從數組中提取值,按照對應位置,對變數賦值,對象也可以實現解構

    1.數組解構

      let[a,b,c] = [1,2,3];

      console.log(a,b,c);   //輸出結果  1  2  3

      如果解構不成功,變數的值是undefined

    2.對象解構

      let person = {name:'書記',age:22};

      let{name, age} = person;

      console.log(name,age)   // 輸出結果  '書記'  22

 

      let {name: myName, age: myAge} = person;  // myName myAge 屬於別名

      console.log(myName); // 'zhangsan'

      console.log(myAge); // 20

      

      小結:

      解構賦值就是把數據結構分解,然後給變數進行賦值

      如果解構不成功,變數跟數值個數不匹配的時候,變數的值為undefined

      數組解構用中括弧包裹,多個變數用逗號隔開,對象解構用花括弧包裹,多個變數用逗號隔開

      利用解構賦值能夠讓我們方便的去取對象中的屬性和方法

  4.箭頭函數

    ES6新增的定義函數的方式

    () => {}   //()代表函數,=>必須要給的符號,指向那一塊代碼 {}函數體

    const  fn() => {}     //代表把一個函數賦值給fn

    特點:

      1.如果函數體只有一句代碼,且代碼的執行結果就是返回值,可以省略大括弧

function fn(n1,n2){
   return   n1 + n2;
}
//ES6箭頭函數寫法
const fn = (n1,n2)=>n1 +n2;

      2.如果形參只有一個,可以省略小括弧

function fn(num){
    return num;
}
//ES6箭頭函數寫法
const fn = num => num;

      3. 箭頭函數不綁定this,箭頭函數中的this指向的是函數定義位置的上下文this

      

 

  5.剩餘函數

    在不知道有多少個參數的時候使用,允許我們將一個不定數量的參數表示為一個數組,不定參數定義方式,這種方式很方便的去聲明一個不知道參數情況下的一個函數

    

function sum (first,...args){
    console.log(first);    // 10
    console.log(args);   // [20,30]
  
}
sum(10,20,30);

    剩餘參數和解構配合使用

let uname = ['andy','tony','tommy'];
let [s1,...s2] = uname;
console.log(s1);   //'andy'
console.log(s2);   //['tony','tommy']
 

3.ES6內置對象擴展

  Array的擴展方法

    1.擴展運算符:可以將數組或對象轉為用逗號隔開的參數序列

let arr = [1,2,3];
...arr;
console.log(...arr); //1 2 3
console.log(1,2,3)  //1 2 3

    可以用於合併數組,也可以將偽數組或可遍歷對象轉換為真正的數組

// 合併數組
// 方法一
let ary1 = [1, 2, 3]; 
let ary2 = [3, 4, 5]; 
let ary3 = [...ary1, ...ary2];
console.log(ary3);   //[1,2,3,3,4,5]
//方法二
ary1.push(...ary2);
console.log(ary1)    //[1,2,3,3,4,5]
// 轉為真的數組
var divs = document.querySelectorAll('div');
divs = [...divs];
console.log(divs);

    構造函數方法 Array.from() 

     將偽數組或可遍歷對象轉換為真正的數組

let obj = {
    '0': "a",
    '1': "b",
    '2': "c",
    length : 3
};
let arr = Array.form(obj);
console.log(arr);   //["a","b","c"]

    方法還可以接受第二個參數,作用類似於數組的map方法,用來對每個元素進行處理,將處理後的值放入返回的數組

let arrayLike = {
     "0": 1, 
     "1": 2,
     "length": 2
 }
let newAry = Array.from(arrayLike, item => item *2)
console.log(newAry)   //[2,4]
// 如果是對象,那麼屬性需要寫對應的索引

  find() :用於找出數組裡第一個符合條件的元素對象,沒有找到則返回undefined

let arr = [{
     id: 1,
     name : 'andy'
},{
    id : 2,
    name: 'tom'
}];
let result = arr.find((item, index) => item.id == 2) ////找數組裡面符合條件 的值,當數組中元素id等於2的查找出來,註意,只會匹配第一個

   

  findIndex():用於找出數組裡第一個符合條件的元素的位置,返回的是符合條件的元素的索引號,如果沒有找到返回-1

let arr = [1, 2, 3, 4, 5];
let result = arr.findIndex((value,index) => { return value > 4 });
console.log(result);  // 4

  includes(): 判斷某個數組是否包含給定的值,返回布爾值

let arr = [1,2,3,4];
console.log(arr.includes('a'));  // false
console.log(arr.includes(2));   // true

  string的擴展方法

  ES6中新增的創建字元串的方式,使用反引號定義

     let str = `hello world`; 

  特點:

    1.模板字元串中可以解析變數 ( 用${變數名}包裹變數名 )

let name = `王書記`; 
let sayHello = `你好,我的名字叫${name}`; 
console.log(sayHello); // 你好,我的名字叫王書記

    2.模板字元串里可以換行

let result = {
        name : '張三',
        age : 22,
        sex : '男'
}
let str = `
       <div>${result.name}</div>
       <div>${result.age}</div>
       <div>${result.sex}</div>
`;
console.log(str);   

    3. 在模板字元串中可以調用函數

function fn(){
       return `我亞索真的很快樂`
};
let str = `${fn()},你相信我`;
console.log(str);  //我亞索真的很快樂,你相信我

  方法:

    startsWith()和endsWith()方法

      startsWith() 表示參數字元串是否在原字元串的頭部,返回布爾值  

      endsWith() 表示參數字元串是否在原字元串的尾部,返回布爾值

let str1 = `Hello World`;
console.log(str1.startsWith('H'));   // true
console.log(str1.endsWith('d'));    // true

    repeat(n) 方法:表示將字元串重覆n次,返回一個新的字元串

let str2 = 'panpan';
let newStr = str2.repeat(3);
console.log(newStr);  //panpanpanpanpanpan

 

   Set數據結構

    類似數組,但是成員的值都是唯一的,沒有重覆的值

      Set本身是一個構造函數,用來生成 Set 數據結構

        const  s = new Set();

      Set函數可以接收一個數組作為參數,用來初始化

        const s = new Set([1,2,3,4]);    // {1,2,3,4}

   方法:

    

    遍歷:

      Set結構的實例和數組一樣,也擁有forEach方法,用於對每個成員執行某種操作,沒有返回值

      語法:s.forEach( (value) => {console.log(value)})        列印每一個成員值

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 服務端啟動與客戶端連接 查看redis負載狀態 redis-cli命令控制行中獲取客戶端信息命令 借鑒:https://blog.csdn.net/weixin_37288522/article/details/78778755 借鑒:https://blog.csdn.net/weixin_339 ...
  • 數據挖掘 推薦演算法(Mahout工具) 一、簡介 Apache頂級項目(2010.4) Hadoop上的開源機器學習庫 可伸縮擴展的 Java庫 推薦引擎(協同過濾)、聚類和分類 二、機器學習介紹 通常問題都歸為這幾類問題 分類問題 回歸問題 聚類問題 推薦問題 三、安裝方法 3.1 下載Mahou ...
  • ### 前言 最近項目中又一次需要集成友盟的三方登錄與分享,之前沒有記錄過,所以這次來寫一下... ### 準備工作 1.註冊友盟賬號創建應用,獲取key:申請地址http://www.umeng.com 2.對對應的平臺(騰訊、微信、新浪等等)申請第三方賬號,獲取key和密碼 ### 集成步驟 因 ...
  • 一、源碼地址 https://github.com/imxiaoer/WeChatMiniSelect 二、效果圖 錄屏圖片質量較差,所以大家會看到殘影(捂臉) 三、組件源碼 1. select.wxml 說明:用 catchtap 而不用 bindtap 是為了阻止事件冒泡,為了實現點擊頁面其他地 ...
  • 一、float基礎用法示例 1、我們先建兩個div盒子,設置高度、寬度和背景顏色; 最開始兩個盒子在網頁上的位置如下: 然後我們將紅色盒子浮動到右邊 然後我們會發現紅色盒子浮動到了右邊,但是藍色盒子就直接上移到了原先紅色盒子的位置。 然後我們將藍色盒子也浮動到右邊看看效果: 我們會發現它會緊跟著紅色 ...
  • Vue路由系統 一切分離都是為了更好的結合,本文詳細介紹了前後端分離架構之後,前端如何實現路由控制,即Vue路由系統。 一、VueRouter實現原理 VueRouter的實現原理是根據監控錨點值的改變,從而不斷修改組件內容來實現的,我們來試試不使用VueRouter,自己實現路由控制,如下代碼: ...
  • 現在很多網站都會使用瀑布流的一個效果,什麼是瀑布流呢,用在哪些地方呢? 大概就是這樣的一個效果,一般用於無法保證圖片大小的網站。 先看下佈局+css 實現的一個大概思路: 瀑布流:第一行正常浮動,從第二行開始,每個元素都定位到上一行的最小高度的元素下 1.獲取元素 2.佈局 3.區分第一行和後面的行 ...
  • 在javascript中常見的瀏覽器相容問題,以及解決方式。 在前端工作當中我們遵循這樣的原則:漸進增強和優雅降級 漸進增強(progressive enhancement): 針對低版本瀏覽器進行構建頁面,保證最基本的功能,然後再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗 優雅 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...