前端框架學習-ES6新特性(尚硅谷web筆記)

ECMASript是由 Ecma 國際通過 ECMA-262 標準化的腳本程序設計語言。javaScript也是該規范的一種實現。

新特性目錄

        • 筆記出處:b站
        • ES6
          • let 關鍵字
          • const關鍵字
          • 變量的解構賦值
          • 模板字符串
          • 簡化對象寫法
          • 箭頭函數
          • rest參數
          • spread擴展運算符
          • Promise
          • 模塊化
        • ES8
          • async 和 await
        • ES9
          • Rest/Spread屬性

筆記出處:b站

尚硅谷Web前端ES6教程,涵蓋ES6-ES11
阮一峰大佬的:ECMAScript 6 入門

ES6

let 關鍵字

使用let關鍵字聲明變量的特點:

  1. 不允許重復聲
  2. 塊兒級別作用域
  3. 不存在變量提升
  4. 不影響作用域鏈
const關鍵字

const關鍵字用來聲明常量,const聲明由以下特點

  1. 聲明必須賦初始值
  2. 標識符一般為大寫
  3. 不允許重復聲明
  4. 值不允許修改
  5. 塊兒級作用域
變量的解構賦值

ES6允許按照一定的模式,從數組和對象中提取值,對變量進行賦值

	 //數組的解構賦值const arr = ['張學友', '劉德華', '黎明', '郭富城'];let [zhang, liu, li, guo] = arr;//對象的解構賦值const lin = {name: '林志穎',tags: ['車手', '歌手', '小旋風', '演員']};let {name, tags} = lin;
模板字符串

模板字符串(template string)是增強版的字符串,用反引號(`)標識,特點:

  1. 字符串中可以出現換行符
  2. 可以使用 ${xxx} 形式輸出變量
	// 定義字符串let str = `<ul><li>沈騰</li><li>瑪麗</li><li>魏翔</li><li>艾倫</li></ul>`;// 變量拼接let star = '王寧';let result = `${star}在前幾年離開了開心麻花`;
簡化對象寫法

ES6 允許在大括號里面,直接寫入變量和函數,作為對象的屬性和方法。這
樣的書寫更加簡潔。

let name = '尚硅谷';
let slogon = '永遠追求行業更高標準';
let improve = function () {console.log('可以提高你的技能');
}
//屬性和方法簡寫
let atguigu = {name,// 屬性名和變量名相同可以簡寫slogon,// 屬性名和變量名相同可以簡寫improve,// 屬性名和函數變量名相同可以簡寫change() {// change:function(){}的簡寫方式console.log('可以改變你')}
};
箭頭函數

ES6 允許使用「箭頭」(=>)定義函數。

// 1. 通用寫法
let fn = (arg1, arg2, arg3) => {return arg1 + arg2 + arg3;
}
// 2. 省略小括號的情況,只有一個參數
let fn2 = num => {return num * 10;
};
// 3. 省略花括號,省略花括號的同時要省略`return`
let fn3 = score => score * 20;
// 4. this指向2聲明所在作用域中this的值
let fn4 = () => {console.log(this);//Windows
}
let school = {name: '尚硅谷',getName(){let fn5 = () => {console.log(this);// this指向school}fn5();}
};

箭頭函數不會更改 this 指向,用來指定回調函數會非常合適

rest參數

ES6 引入 rest 參數,用于獲取函數的實參,用來代替 arguments

// 類似java中的可變參數
function add(...args){console.log(args);
}
add(1,2,3,4,5);
// rest參數必須是最后一個形參,在其他參數都確定之后才是rest參數
function minus(a,b,...args){console.log(a,b,args);
}
minus(100,1,2,3,4,5,19);
spread擴展運算符

擴展運算符(spread)也是三個點(…)。它好比 rest 參數的逆運算,將一個數組轉為用逗號分隔的參數序列,對數組進行解包。在ES9之后也可對對象進行擴展

// 展開數組
let tfboys = ['德瑪西亞之力','德瑪西亞之翼','德瑪西亞皇子'];
function fn(){console.log(arguments);// 輸出不是數組對象而是,'德瑪西亞之力', '德瑪西亞之翼', '德瑪西亞皇子'
}
fn(...tfboys)
// 展開對象
/**
* 展開對象
*/
let skillOne = { q: '致命打擊',};
let skillTwo = { w: '勇氣'};
let skillThree = { e: '審判'};
let skillFour = { r: '德瑪西亞正義'};
let gailun = {...skillOne, ...skillTwo,...skillThree,...skillFour};
Promise

Promise 是 ES6 引入的異步編程的新解決方案。語法上 Promise 是一個構造函數,
用來封裝異步操作并可以獲取其成功或失敗的結果.

	//實例化 Promise 對象const p = new Promise(function(resolve, reject){resolve(data);// 成功時使用這個方法reject(err);// 失敗時使用這個方法});//調用 promise 對象的 then 方法p.then(function(value){// then后面的第一個函數是成功的回調,第二個函數是失敗時的回調console.log(value);}, function(reason){console.error(reason);})// 程序發生錯誤的時候調用p.catch(function(reason){console.warn(reason);});
模塊化

模塊化是指將一個大的程序文件,拆分成許多小的文件,然后將小文件組合起來。
好處:

  1. 防止命名沖突
  2. 提高代碼復用
  3. 增強維護性,出問題只需要調整對應模塊即可

模塊化功能主要由兩個命令構成:

  • export 命令用于規定模塊的對外接口
  • import 命令用于輸入其它模塊提供的功能
// 在m1.js中導出// 分別暴露export let school = '尚硅谷';export function teach() {console.log("我們可以教給你開發技能");}// 統一暴露export {school, teach};// 默認暴露export default {school: 'ATGUIGU',change: function(){console.log("我們可以改變你!!");}}
// 在app.js中使用import {school, teach} from "./src/js/m1.js";// 針對默認暴露可以這樣寫import m1 from "./src/js/m1.js";

ES8

async 和 await

async 和await 目的是為了簡化promise中api的使用,兩種語法結合可以讓異步代碼和同步代碼一樣。
解決回調地獄問題

async函數

async 函數的返回值為 promise 對象
promise 對象的結果由 async 函數執行的返回值決定

await 函數

  1. await 必須寫在 async 函數中
  2. await 右側的表達式一般為 promise 對象
  3. await 返回的是 promise 成功的值
  4. await 的 promise 失敗了, 就會拋出異常, 需要通過 try…catch 捕獲處理
async function main() {try {let result = await p;console.log(result);} catch (e) {console.log(e);}}

ES9

Rest/Spread屬性

Rest 參數與 spread 擴展運算符在 ES6 中已經引入,不過 ES6 中只針對于數組,
在 ES9 中為對象提供了像數組一樣的 rest 參數和擴展運算符

function connect({host, port, ...user}) {console.log(host);console.log(port);console.log(user);// 可以直接將后三個參數封裝到user中
}
connect({host: '127.0.0.1',port: 3306,username: 'root',password: 'root',type: 'master'
});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42742.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云原生周刊:Kubernetes v1.28 新特性一覽 | 2023.8.14

推薦一個 GitHub 倉庫&#xff1a;Fast-Kubernetes。 Fast-Kubernetes 是一個涵蓋了 Kubernetes 的實驗室&#xff08;LABs&#xff09;的倉庫。它提供了關于 Kubernetes 的各種主題和組件的詳細內容&#xff0c;包括 Kubectl、Pod、Deployment、Service、ConfigMap、Volume、…

CF1013B And 題解

題目傳送門 題目意思&#xff1a; 給你一個長度為 n n n 的序列 a i a_i ai?&#xff0c;再給一個數 x x x。每一步你可以將序列中的一個數與上 x x x。請問最少要多少步才可以使得序列中出現兩個相同的數&#xff0c;如果無解輸出 ? 1 -1 ?1。 思路&#xff1a; 首…

Vue頁面刷新常用的4種方法

Vue項目里,有時候我們需要刷新頁面,重新加載頁面數據,常用方法如下: 方法一:location.reload() 方法全局刷新 使用 location.reload() 方法可以簡單地實現當前頁面的刷新,這個方法會重新加載當前頁面,類似于用戶點擊瀏覽器的刷新按鈕。 在 Vue 中,可以將該方法綁定到…

題解 | #M.Fair Equation# 2023牛客暑期多校10

M.Fair Equation 簽到題 題目大意 給定一個式子 A B C ABC ABC &#xff0c;其中正整數 A , B , C ≤ 1 0 6 A,B,C\le 10^6 A,B,C≤106 問能否在 A , B , C A,B,C A,B,C 其中一個數的某一位置&#xff08;可以是開頭和結尾&#xff09;插入一個數字&#xff0c;使得等式…

Elasticsearch 查詢之Function Score Query

前言 ES 的主查詢評分模式分為兩種&#xff0c;是信息檢索領域的重要算法&#xff1a; TF-IDF 算法 和 BM25 算法。 Elasticsearch 從版本 5.0 開始引入了 BM25 算法作為默認的文檔評分&#xff08;relevance scoring&#xff09;算法。在此之前&#xff0c;Elasticsearch 使…

sip網絡號角喇叭 sip音柱 POE供電廣播音箱 ip網絡防水對講終端 sip網絡功放

SV-7042TP網絡號角喇叭 一、描述 SV-7042TP是我司的一款SIP網絡號角喇叭&#xff0c;具有10/100M以太網接口&#xff0c;內置有一個高品質揚聲器&#xff0c;將網絡音源通過自帶的功放和喇叭輸出播放&#xff0c;可達到功率30W。SV-7042TP作為SIP系統的播放終端&#xff0c;可…

【腳踢數據結構】常見樹總結(圖碼結和版)

(??? )&#xff0c;Hello我是祐言QAQ我的博客主頁&#xff1a;C/C語言&#xff0c;Linux基礎&#xff0c;ARM開發板&#xff0c;軟件配置等領域博主&#x1f30d;快上&#x1f698;&#xff0c;一起學習&#xff0c;讓我們成為一個強大的攻城獅&#xff01;送給自己和讀者的…

如何構造不包含字母和數字的webshell

利用不含字母與數字進行繞過 1.異或進行繞過 2.取反進行繞過 3.利用php語法繞過 利用不含字母與數字進行繞過 基本代碼運行思路理解 <?php echo "A"^""; ?> 運行結果為! 我們可以看到&#xff0c;輸出的結果是字符"!"。之所以會…

C++:字符串哈希

字符串哈希 給定一個長度為 n n n的字符串&#xff0c;再給定 m m m個詢問&#xff0c;每個詢問包含四個整數 l 1 , r 1 , l 2 , r 2 l_1,r_1,l_2,r_2 l1?,r1?,l2?,r2?&#xff0c;請你判斷 [ l 1 , r 1 ] [l_1,r_1] [l1?,r1?]和 [ l 2 , r 2 ] [l_2,r_2] [l2?,r2?]這…

“深入理解Java虛擬機(JVM):背后的工作原理解析“

標題&#xff1a;深入理解Java虛擬機&#xff08;JVM&#xff09;&#xff1a;背后的工作原理解析 摘要&#xff1a;本文將深入探討Java虛擬機&#xff08;JVM&#xff09;的工作原理&#xff0c;包括內存管理、垃圾回收、即時編譯器等關鍵概念&#xff0c;以及如何優化代碼以…

React 18 更新 state 中的數組

參考文章 更新 state 中的數組 數組是另外一種可以存儲在 state 中的 JavaScript 對象&#xff0c;它雖然是可變的&#xff0c;但是卻應該被視為不可變。同對象一樣&#xff0c;當想要更新存儲于 state 中的數組時&#xff0c;需要創建一個新的數組&#xff08;或者創建一份已…

vue2,使用element中的Upload 上傳文件,自定義上傳http-request上傳,上傳附件支持多選,多個文件只發送一次請求

復制直接使用&#xff0c;組件根據multiple是否多選來返回附件內容&#xff0c;支持多選就返回數據附件&#xff0c;則返回一個附件對象。 //uploadFiles.vue<template><div><el-uploadclass"avatar-uploader"action"#":accept"accep…

對比 VPN 與遠程桌面軟件,為什么遠程桌面更優越

數字格局不斷演變&#xff0c;我們的工作和連接方式也在不斷變化。企業紛紛轉向遠程運營&#xff0c;有關推進向遠程過渡的最佳技術的爭論從未停止。爭論的焦點通常是虛擬專用網絡&#xff08;VPN&#xff09;和遠程桌面軟件。 長期以來&#xff0c;VPN 一直被用作訪問公司網絡…

Linux上,出現依賴無法下載時,如何解決?

1.vim 編輯 /etc/profile 文件&#xff1a; vim /etc/hosts刪除/etc/hosts文件中已有的內容&#xff0c;添加如下內容&#xff0c; 140.82.112.3 github.com&#xff1a;wq保存退出&#xff1b; 2.使配置生效 systemctl restart network然后&#xff0c;就可以愉快&#x1…

【C++】函數指針

2023年8月18日&#xff0c;周五上午 今天在B站看Qt教學視頻的時候遇到了 目錄 語法和typedef或using結合我的總結 語法 返回類型 (*指針變量名)(參數列表)以下是一些示例來說明如何聲明不同類型的函數指針&#xff1a; 聲明一個不接受任何參數且返回void的函數指針&#xf…

【Flink】Flink窗口觸發器

數據進入到窗口的時候,窗口是否觸發后續的計算由窗口觸發器決定,每種類型的窗口都有對應的窗口觸發機制。WindowAssigner 默認的 Trigger通常可解決大多數的情況。我們通常使用方式如下,調用trigger()方法把我們想執行觸發器傳遞進去: SingleOutputStreamOperator<Produ…

kubernetes--技術文檔--基本概念--《10分鐘快速了解》

官網主頁&#xff1a; Kubernetes 什么是k8s Kubernetes 也稱為 K8s&#xff0c;是用于自動部署、擴縮和管理容器化應用程序的開源系統。 它將組成應用程序的容器組合成邏輯單元&#xff0c;以便于管理和服務發現。Kubernetes 源自Google 15 年生產環境的運維經驗&#xff0c…

《一個操作系統的實現》windows用vm安裝CentOS——從bochs環境搭建到第一個demo跑通

vm安裝CentOS虛擬機帶有桌面的版本。su輸入密碼123456。更新yum -y update 。一般已經安裝好后面這2個工具&#xff1a;yum install -y net-tools wget。看下ip地址ifconfig&#xff0c;然后本地終端連接ssh root192.168.249.132輸入密碼即可&#xff0c;主要是為了復制網址方便…

Netty+springboot開發即時通訊系統筆記(四)終

實時性 1.線程池多線程&#xff0c;把消息同步給其他端和對方用戶&#xff0c;其中數據持久化往往是最浪費時間的操作&#xff0c;可以使用mq異步存儲&#xff0c;因為其他業務不需要拿著整條數據&#xff0c;只需要這條數據的id進行操作。 2。消息校驗前置&#xff0c;放在t…

Vim的插件管理器之Vundle

1、安裝Vundle插件管理器 Vim可以安裝插件&#xff0c;但是需要手動安裝比較麻煩&#xff0c;Vim本身沒有提供插件管理器&#xff0c;所以會有很多的第三方的插件管理器&#xff0c;有一個vim的插件叫做 “vim-easymotion”&#xff0c;在它的github的安裝說明里有列出對于不同…