欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文概述ES7~12的語法及其相關(guān)使用規(guī)則

 更新時間:2023年01月08日 11:06:42   作者:既白biu  
隨著JavaScript這門語言越來越流行,使得JavaScript這門語言越來越完善,這篇文章主要介紹了一文概述ES7~12的語法及其相關(guān)使用規(guī)則,需要的朋友可以參考下

前言

本文旨在介紹ES7~12一些常用的語法,有些特性篇幅較多,會專門寫文章介紹。

JavaScript這門語言在設(shè)計之初,其實會存在某些問題,隨著JavaScript這門語言越來越流行, ECMA國際標準化組織在ES5的基礎(chǔ)上,推出了許多新特性以補充之前不足的地方,使得JavaScript這門語言越來越完善,那么今天我就將講述一些比較常用的ES7~12的新特性,一起來看看吧。

看完本文,你將:

  1. 你將會了解ES7~12的常用的語法
  2. 你將會了解這些語法的常用使用規(guī)則

一起來看看吧

ES7

數(shù)組的includes方法

ES7中新增了數(shù)組的includes方法,該方法旨在判斷數(shù)組中是否存在某個元素。

在ES7之前,判斷數(shù)組中是否存在某個元素,可以用indexOf,但是如果數(shù)組中有NaN,則判斷不出來,   例如:

const names = ["a", "b", "c", "d", NaN]

if (names.indexOf("c") !== -1) {
  console.log("包含元素")
}
if (names.indexOf("NaN") !== -1) {
  console.log("包含元素")
}


//E

includes方法中第一個參數(shù)可以傳入要判斷的元素,第二個參數(shù)傳入索引值,表示從索引值位置開始查找:

const names = ["a", "b", "c", "d", NaN]

if (names.includes("NaN") !== -1) {
  console.log("包含元素")//可以輸出
}
if (names.includes("b", 2)) {
  console.log("包含b元素")//不可以輸出
}
if (names.includes("b", 1)) {
  console.log("包含b元素")//可以輸出
}

指數(shù)的運算方法

ES7中新增了指數(shù)的運算方法,該方法旨在使指數(shù)寫法更簡便。

ES7之前:

Math.pow(),第一個參數(shù)傳入底數(shù),第二個參數(shù)傳入指數(shù)

const result1 = Math.pow(3, 2)
console.log(result1)//9

ES7:用**寫法

const result2 = 3 ** 2;
console.log(result2)//9

ES8

Object的values

Object.keys獲取對象所有的屬性名

Object.values獲取對象所有的屬性名,例如:

const obj = {
  name: "cy",
  age: 18
}

console.log(Object.keys(obj))//[ 'name', 'age' ]
console.log(Object.values(obj))//[ 'cy', 18 ]

如果參數(shù)里傳入的是數(shù)組,返回數(shù)組本身:
console.log(Object.values([“a”, “b”, “c”]))//[ ‘a’, ‘b’, ‘c’ ]

參數(shù)里傳入的是字符串,返回的是其每個字母拆分后轉(zhuǎn)化后形成的數(shù)組:
console.log(Object.values(“abc”))//[ ‘a’, ‘b’, ‘c’ ]

Object的entries

Object.entries將一個對象轉(zhuǎn)化成數(shù)組,對象的其中的每個屬性鍵值對放在子數(shù)組里面。

例如:

const obj = {
    name: "cy", 
    age: 18
}

console.log(Object.entries(obj))//[ [ 'name', 'cy' ], [ 'age', 18 ] ]

如果傳入的是數(shù)組,則每個子數(shù)組里面的鍵的值為索引號,例如:

console.log(Object.entries(["a", "b", "n"]))//[ [ '0', 'a' ], [ '1', 'b' ], [ '2', 'n' ] ]

如果傳入的是字符串,和數(shù)組的情況類似,子數(shù)組里面的值為字符串拆分后的字母:

console.log(Object.entries("abc"))//[ [ '0', 'a' ], [ '1', 'b' ], [ '2', 'c' ] ]

padStart和padEnd

ES8中增加了 padStart 和 padEnd 方法,分別是對字符串的首尾進行填充的。

const message = "Hello World"

const newMessage = message.padStart(15, "a")
const newMessage1 = message.padEnd(15, "a")
console.log(newMessage)//aaaaHello World
console.log(newMessage1);//Hello Worldaaaa

列舉一個簡單的應(yīng)用場景:比如需要對身份證、銀行卡的前面位數(shù)進行隱藏
const cardNumber = “321324234242342342341312”
const lastFourCard = cardNumber.slice(-4)
const finalCard = lastFourCard.padStart(cardNumber.length, “*”)
console.log(finalCard)//********************1312

Trailing-Commas

允許我們在調(diào)用函數(shù)時,在最后一個參數(shù)后面加上逗號不會報錯。

ES9

Object.getOwnPropertyDescriptor()

Object.getOwnPropertyDescriptor() 方法返回指定對象上一個自有屬性對應(yīng)的屬性描述符。(自有屬性指的是直接賦予該對象的屬性,不需要從原型鏈上進行查找的屬性)不存在則返回undefined

const object1 = {
  property1: 42
};

const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');

console.log(descriptor1.configurable);
//  true

console.log(descriptor1.value);
// 42

async、await的使用

由于該部分篇幅較多,所以以后會專門寫文章介紹其詳細使用的。

ES10 

flat和flatMap的使用

flat:

flat會將數(shù)組中嵌套的子數(shù)組展開后放入最終的數(shù)組中,可以傳入數(shù)組表示可以展開數(shù)組的層數(shù),默認為1.例如:

const nums = [10, 20, [2, 9],
    [
        [30, 40],
        [10, 45]
    ], 78, [55, 88]
]
const newNums = nums.flat()
console.log(newNums)//[ 10, 20, 2, 9, [ 30, 40 ], [ 10, 45 ], 78, 55, 88 ]

const newNums2 = nums.flat(2)
console.log(newNums2)//[
//   10, 20,  2,  9, 30,
//   40, 10, 45, 78, 55,
//   88
// ]

flatMap:
既有flat的效果,又有Array.map()的效果,傳入一個回調(diào)函數(shù),類似Array.map()的回調(diào)函數(shù),并且對返回的數(shù)值有flat的效果,例如:

const nums2 = [10, 20, 30]
const newNums3 = nums2.flatMap(item => {
  return item * 2
})//[ 20, 40, 60 ]

應(yīng)用場景:將數(shù)組中的所有的字符串以某個符號分割后輸出:

const messages = ["Hello World", "hello cy", "my name is cy"]
const words = messages.flatMap(item => {
    return item.split(" ")
})

console.log(words)
// [
//   'Hello', 'World',
//   'hello', 'cy',
//   'my',    'name',
//   'is',    'cy'
// ]

Object的fromEntries

可以將類似于對象經(jīng)過Object.entries轉(zhuǎn)化成的數(shù)組再轉(zhuǎn)化回對象形式:

let a = [
    ['0', 'a'],
    ['1', 'b'],
    ['2', 'n']
]
const paramObj = Object.fromEntries(a)
console.log(paramObj);//{ '0': 'a', '1': 'b', '2': 'n' }

trimStart和trimEnd

trim請除字符串前后的空格

trimStart清除字符串前面的空格

trimEnd清除字符串后面的空格

ES11

BigInt的使用

之前,JS所能表示的最大整數(shù)為Number.MAX_SAFE_INTEGER,為9007199254740991,比這個數(shù)還大,則可能在運算時出現(xiàn)錯誤,于是ES11后,推出了BigInt,用來表示可以超出限制的數(shù)字,BigInt數(shù)字末尾會加n,可以用Number(數(shù)字)將BigInt轉(zhuǎn)化成普通的數(shù)字類型。例子:

const bigInt = 900719925474099100n
console.log(bigInt + 10n)//900719925474099110n

const num = 100
console.log(bigInt + BigInt(num))//900719925474099200n

const smallNum = Number(bigInt)
console.log(smallNum)//900719925474099100

Nullish-Coalescing-operator

Nullish-Coalescing-operator空值合并運算,用雙問號表示(??):
如果??前面的值為空或者undefined,則最后的結(jié)果取問號后面的數(shù),例如:

const foo = undefined
// const bar = foo || "default value"
const bar = foo ?? "defualt value"

console.log(bar)//defualt value

可選鏈

ES11提供了可選鏈(Optional Chainling),實例:
const info = {
name: “cy”,
// friend: {
// girlFriend: {
// name: “myj”
// }
// }
}

這是我們之前取值 info.friend.girlFriend的方法:if (info && info.friend && info.friend.girlFriend) {
console.log(info.friend.girlFriend.name)
}

可選鏈用法:info.friend ? .girlFriend ? .name
?前值為空或者undefined則不繼續(xù)取值,否則從當前繼續(xù)取值。

gloalThis

在瀏覽器運行環(huán)境下,window和全局作用域中的this均為全局對象。Node環(huán)境下是不行的,必須用global才可以拿到全局對象。

而ES11中的globalThis則在這2種情形下,都會指向全局對象。

ES12

finalizationRegistry的用法

finalizationRegistry是一個類,在注冊時候可以傳入一個回調(diào)函數(shù),注冊在finalRegistry的對象, 被銷毀時候會執(zhí)行回調(diào)函數(shù)。注冊的對象的register第一個參數(shù)傳入綁定的對象,第二個參數(shù)可以傳入?yún)?shù),這個參數(shù)會被回調(diào)函數(shù)接收。例子:

// ES12: FinalizationRegistry類
const finalRegistry = new FinalizationRegistry((value) => {
    console.log("注冊在finalRegistry的對象, 被銷毀", value)
})

let obj = { name: "cy" }
let info = { age: 18 }

finalRegistry.register(obj, "obj")
finalRegistry.register(info, "info")

obj = null
info = null
//注冊在finalRegistry的對象, 被銷毀 info
//注冊在finalRegistry的對象, 被銷毀 obj

WeakRef的使用

WeakRef是一個類,如果我們默認將一個對象賦值給另外一個引用,那么這個引用是一個強引用,但是如果我們希望是一個弱引用的話,可以使用WeakRef;

此時如果想拿到引用的對象的屬性,需要先調(diào)用deref函數(shù),例如:

let obj = { name: "cy" }
let info = new WeakRef(obj)
console.log(info.name); //undefined
console.log(info.deref().name);//cy

這里要注意的是建立的是弱引用,如果將原先的引用破壞,則這個引用的對象會被回收,自然也拿不到值了。

let obj = { name: "cy" }
let info = new WeakRef(obj)
console.log(info.name); //undefined
console.log(info.deref().name);//cy
obj = null

setTimeout(() => {
    console.log(info.deref() && info.deref().name)//undefined
}, 10000)

 logical-assign-operator

logical-assign-operator(邏輯運算擦操作符):

1. ||= 邏輯或賦值運算 let message = “hello world” message = message ||
“default value” 上面的式子可以簡寫成message ||= “default value”

2. &&= 邏輯與賦值運算 與邏輯或賦值運算用法同理

3. ??= 邏輯空賦值運算:let message = 0
message ? ? = “default value”,?前面的不是空或者undefined就等于后面的內(nèi)容

到此這篇關(guān)于一文概述ES7~12的語法及其相關(guān)使用規(guī)則的文章就介紹到這了,更多相關(guān)ES7~12的語法與使用規(guī)則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過js動態(tài)創(chuàng)建標簽,并設(shè)置屬性方法

    通過js動態(tài)創(chuàng)建標簽,并設(shè)置屬性方法

    下面小編就為大家分享一篇通過js動態(tài)創(chuàng)建標簽,并設(shè)置屬性方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • JS加密插件CryptoJS實現(xiàn)的Base64加密示例

    JS加密插件CryptoJS實現(xiàn)的Base64加密示例

    這篇文章主要介紹了JS加密插件CryptoJS實現(xiàn)的Base64加密,結(jié)合實例形式分析了CryptoJS進行base64加密的簡單實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • javascript新建標簽,判斷鍵盤輸入,以及判斷焦點(示例代碼)

    javascript新建標簽,判斷鍵盤輸入,以及判斷焦點(示例代碼)

    這篇文章主要介紹了javascript新建標簽,判斷鍵盤輸入,以及判斷焦點(示例代碼)。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • JS添加或刪除HTML dom元素的方法實例分析

    JS添加或刪除HTML dom元素的方法實例分析

    這篇文章主要介紹了JS添加或刪除HTML dom元素的方法,結(jié)合實例形式分析了javascript針對HTML DOM元素節(jié)點的創(chuàng)建、追加、刪除等相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-03-03
  • JS實現(xiàn)前端動態(tài)分頁碼代碼實例

    JS實現(xiàn)前端動態(tài)分頁碼代碼實例

    這篇文章主要介紹了JS實現(xiàn)前端動態(tài)分頁碼代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 元素綁定click點擊事件方法

    元素綁定click點擊事件方法

    當點擊元素時,會發(fā)生 click 事件。當鼠標指針停留在元素上方,然后按下并松開鼠標左鍵時,就會發(fā)生一次 click。click() 方法觸發(fā) click 事件,或規(guī)定當發(fā)生 click 事件時運行的函數(shù)。
    2015-06-06
  • JS如何判斷json是否為空

    JS如何判斷json是否為空

    本文重點給大家介紹js判斷json對象是否為空的知識,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-07-07
  • JS+CSS實現(xiàn)帶關(guān)閉按鈕DIV彈出窗口的方法

    JS+CSS實現(xiàn)帶關(guān)閉按鈕DIV彈出窗口的方法

    這篇文章主要介紹了JS+CSS實現(xiàn)帶關(guān)閉按鈕DIV彈出窗口的方法,實例分析了div彈出層窗口的實現(xiàn)技巧,非常具有實用價值,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 微信小程序自定義組件實現(xiàn)單選功能

    微信小程序自定義組件實現(xiàn)單選功能

    這篇文章主要為大家詳細介紹了微信小程序自定義組件實現(xiàn)單選功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 小程序紅包雨的實現(xiàn)示例

    小程序紅包雨的實現(xiàn)示例

    這篇文章主要介紹了小程序紅包雨的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02

最新評論