摘要:是國(guó)際組織于年月日發(fā)布的第六版,正式名為通常被成為或。二模版字面量提供一種簡(jiǎn)單實(shí)現(xiàn)表達(dá)式嵌套的字符串字面量操作,簡(jiǎn)而言之就是能夠以簡(jiǎn)單的方法實(shí)現(xiàn)字符串拼接操作。
本文同步 帶你入門 JavaScript ES6 (一),轉(zhuǎn)載請(qǐng)注明出處。
ES6: 是 ECMA國(guó)際組織于 2015 年 6 月 17 日發(fā)布的 ECMAScript 第六版,正式名為 ECMAScript 2015,通常被成為 ES6 或 ECMAScript 6。
目錄:
一、let 和 const 聲明塊作用域變量
二、模版字面量
三、解構(gòu)賦值
四、對(duì)象字面量簡(jiǎn)寫
五、默認(rèn)參數(shù)
一、 let 和 const 聲明塊作用域變量ES6 引入 let 和 const 作為塊作用域(用花括號(hào) {} 表示)變量聲明語法,用法同之前的 var 聲明變量類似。不同之處在于不會(huì)對(duì)申明的變量(或常量)提升作用域范圍
1.1 let 變量聲明
let 語法用于聲明塊作用域內(nèi)的可重新賦值的變量,作用域內(nèi)無法重新聲明
MDN let
let name = "huliuqing" name = "Hu Liuqing" console.log(name)
1.2 const 常量聲明
const 語法用于聲明是必須 賦值初始值,并且無法重新復(fù)制,作用域內(nèi)不能重新聲明
MDN const
const PI = 3.14 PI = 3.1415 //報(bào)錯(cuò) Uncaught TypeError: Assignment to constant variable. console.log(PI)
1.3 let, const 和 var 比較
function findSeason(search) { var seasons = ["Spring", "Summer", "Autumn", "Winter"] for (season of seasons) { console.log("------START-------") console.log("current season:" + season + " I"m find:" + search) if (season.toLowerCase() == search.toLowerCase()) { let isSpring = search.toLowerCase() == "spring" var theSeason = season const SUMMER_SEASON = "Summer" console.log("isSpring 1: " + isSpring) console.log("SUMMER_SEASON 1:" + SUMMER_SEASON) return SUMMER_SEASON } else { console.log("currentIterSeason is:" + theSeason) } try{ console.log("isSpring 2: " + isSpring) } catch (e) { console.error(e.message) } try{ console.log("SUMMER_SEASON2:" + SUMMER_SEASON) } catch (e) { console.error(e.message) } } } console.log(findSeason("spring")) console.log(findSeason("summer")) console.log(seasons) //運(yùn)行如下 ------START------- current season:Spring I"m find:spring isSpring 1: true SUMMER_SEASON 1:Summer Summer ------START------- current season:Spring I"m find:summer currentIterSeason is:undefined isSprint is not definedfindSeason SUMMER_SEASON 2: SUMMER_SEASON is not definedfindSeason ------START------- current season:Summer I"m find:summer isSpring 1: false SUMMER_SEASON 1:Summer Summer Uncaught ReferenceError: seasons is not defined
let isSpring, var theSeason, const SUMMER_SEASON 都是定義在 if 代碼塊內(nèi)
當(dāng)在 if 代碼塊外調(diào)用isSpring, theSeason, SUMMER_SEASON時(shí),由于 let 和 const 塊作用域特性會(huì)在控制臺(tái)報(bào) not defined 錯(cuò)誤;而 var 定義的 theSeason 不會(huì)報(bào)錯(cuò)而僅輸出 undefined,這是因?yàn)?var 聲明的變量將作用域范圍提升至 getSeason 作用域范圍內(nèi)。
二、 模版字面量提供一種簡(jiǎn)單實(shí)現(xiàn)表達(dá)式嵌套的字符串字面量操作,簡(jiǎn)而言之就是能夠以簡(jiǎn)單的方法實(shí)現(xiàn)字符串拼接操作。
模版字面量
2.1 ES6 之前字符串拼接實(shí)現(xiàn)
let name = "huliuqing" let age = 18 let conent = "你的名字:" + name + " 你今年幾歲了?" + age
隨著拼接內(nèi)容的增多,拼接操作越加復(fù)雜
2.2 ES6 使用飄號(hào)(``: 同 ~ 號(hào)在同一鍵位) 聲明字符串字面量
let result = `請(qǐng)計(jì)算 1 + 2 的結(jié)果 ${1 + 2}` console.log(result); let name = "huliuqing" console.log(`你的名字?${name}`)三、 解構(gòu)賦值
將值從數(shù)組或對(duì)象屬性提取到不同變量中
MDN 解構(gòu)賦值
ES6 之前,如果我們需要將數(shù)組中元素或?qū)ο笾袑傩蕴崛≈挡①x值給變量,實(shí)現(xiàn)起來比較復(fù)雜:
let numeric = [0, 1, 2] let a = numeric[0] let b = numeric[1] let c = numeric[2] console.log(a) console.log(b) console.log(c)
解構(gòu)賦值:語法同對(duì)象或數(shù)組初始化賦值語法,不同之處在于申明左側(cè)定義了需要賦值的變量數(shù)組或提取的對(duì)象屬性。
3.1 解構(gòu)數(shù)組中的值
// 1 let seasons = ["Spring", "Summer", "Autumn", "Winter"] let [spring, summer, autumn, winter] = seasons // 將season 中的各個(gè)元素解構(gòu)到左側(cè)變量 console.log(spring)// Spring console.log(summer)// Summer console.log(autumn)// Autumn console.log(winter)// Winter // 2 將數(shù)組中剩余部分賦值給一個(gè)變量 let [spring2, summer2, ...autumnAndWinter] = seasons console.log(spring2)//Spring console.log(summer2)// Summer console.log(autumnAndWinter)// ["Autumn", "Winter"]
3.2 解構(gòu)對(duì)象中的值
// 1 let user = {name: "huliuqing", age: 18} let {name, age} = user console.log(name) console.log(age)
3.2 默認(rèn)值
// 數(shù)組解構(gòu)默認(rèn)值 let [a = 5, b = 7] = [1] console.log(a)// 1 console.log(b)// 7 //對(duì)象解構(gòu)默認(rèn)值 let {name = "hlq", age = 18} = {name: "huliuqing"} console.log(name)// huliuqing console.log(age)// 18
3.3 解構(gòu)數(shù)組時(shí)忽略某些值的解構(gòu)
let [a, , c] = [1, 2, 3] console.log(a)// 1 console.log(c)// 3 let {name, , address} = {name: "huliuqing", age: 18, address: "shanghai"}四、 對(duì)象字面量簡(jiǎn)寫
MDN 對(duì)象初始化
對(duì)象字面量簡(jiǎn)寫,提供一種對(duì)初始化一個(gè)對(duì)象時(shí),它的對(duì)象屬性名與待賦值的變量名同名的初始化簡(jiǎn)寫方法
比較繞口?
4.1 ES6 之前對(duì)象初始化
let name = "huliuqing" let age = 18 let user = { name: name, age: age } console.log(user)// Object {name: "huliuqing", age: 18}
我們可以看到屬性的賦值方式 name: name,age: age, 這就是冗長(zhǎng)的點(diǎn)。
4.2 對(duì)象字面量簡(jiǎn)寫
let name = "huliuqing" let age = 18 let user = { name, age } console.log(user)// Object {name: "huliuqing", age: 18}
4.3 對(duì)象中方法簡(jiǎn)寫
同屬性字面量簡(jiǎn)寫類似,新的 ES6 語法提供了對(duì)象方法的簡(jiǎn)寫
let name = "huliuqing" let age = 18 let user = { name, age, getUser() { return `${name} : ${age}` }, // ES6 語法 //getUser: function() { // return `${name} : ${age}` //} // 之前的語法 } console.log(user.getUser()) // huliuqing : 18五、默認(rèn)參數(shù)
函數(shù)默認(rèn)參數(shù)允許在函數(shù)沒有值或 undefined 被傳入時(shí),使用默認(rèn)形參
// ES6 之前 function multiply(a, b) { a = typeof a === "undefined" ? 1 : a; b = typeof b === "undefined" ? 1 : b; return a * b; } multiply(2) //2 multiply(5,2) //10 // ES6 之后 function multiply(a = 1, b = 1) { return a * b; } multiply(2) // 2 multiply(5,2)// 10參考資料
MDN
MDN let
MDN 解構(gòu)賦值
MDN 對(duì)象初始化
MDN 默認(rèn)參數(shù)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90422.html
摘要:上一篇學(xué)習(xí)下一代語法一,我們學(xué)習(xí)了關(guān)于塊作用域變量或常量聲明和語法新的字符串拼接語法模版字面量數(shù)組元素或?qū)ο笤氐慕鈽?gòu)賦值和對(duì)象字面量簡(jiǎn)寫的相關(guān)知識(shí)。這便是擴(kuò)展運(yùn)算符的用途之一。 本文同步 帶你入門 JavaScript ES6 (二),轉(zhuǎn)載請(qǐng)注明出處。 上一篇學(xué)習(xí)下一代 JavaScript 語法: ES6 (一),我們學(xué)習(xí)了關(guān)于塊作用域變量或常量聲明 let 和 const 語法、...
摘要:一概述集合是引入的新的內(nèi)置對(duì)象類型,其特點(diǎn)同數(shù)學(xué)意義的集合,即集合內(nèi)所有元素不重復(fù)元素唯一。數(shù)組集合對(duì)比數(shù)組和集合,數(shù)組可以加入重復(fù)數(shù)據(jù),而集合的所有元素是唯一的不允許重復(fù)。因此,適合臨時(shí)存放一組對(duì)象,以及存放跟對(duì)象綁定的信息。 本文同步帶你入門 帶你入門 JavaScript ES6 (五) 集合,轉(zhuǎn)載請(qǐng)注明出處。 前面我們學(xué)習(xí)了: for of 變量和擴(kuò)展語法 塊作用域變量和解構(gòu)...
摘要:方法如示例中定義的方法靜態(tài)方法使用關(guān)鍵字修飾的方法,允許通過類名直接調(diào)用靜態(tài)方法而無需實(shí)例化。 本文同步帶你入門 JavaScript ES6 (四),轉(zhuǎn)載請(qǐng)注明出處。 前面我們學(xué)習(xí)了: for of 變量和擴(kuò)展語法 塊作用域變量和解構(gòu) 箭頭函數(shù) 本章我們將學(xué)習(xí) ES6 中的 類,了解類基本定義和繼承相關(guān)知識(shí) 一、概述 ES6 中的 類 是基于原型的繼承語法糖,本質(zhì)上它是一個(gè) fu...
摘要:上一章我們學(xué)習(xí)了遍歷和擴(kuò)展字符語法。本章我們主要學(xué)習(xí)中的箭頭函數(shù)箭頭函數(shù)更準(zhǔn)確來說叫箭頭函數(shù)表達(dá)式。箭頭函數(shù)余普通函數(shù)功能相同,但語法差別比較大。 帶你入門 JavaScript ES6 (三) 本文同步帶你入門 JavaScript ES6 (三),轉(zhuǎn)載請(qǐng)注明出處。 上一章我們學(xué)習(xí)了 for of 遍歷和擴(kuò)展字符語法。本章我們主要學(xué)習(xí) ES6 中的箭頭函數(shù) 箭頭函數(shù) 更準(zhǔn)確來說叫 箭...
摘要:初始化申明一個(gè)設(shè)置和獲取值使用設(shè)置新值或更新值申明設(shè)置值張三豐張三豐重復(fù)設(shè)置值如果鍵值存在則新值替換舊值張三豐使用獲取值,如果獲取的不存在返回分別獲取判斷是否存在使用判斷給定是否存在映射內(nèi)。 本文同步帶你入門 帶你玩轉(zhuǎn) JavaScript ES6 (六) - Map 映射,轉(zhuǎn)載請(qǐng)注明出處。 本章我們講學(xué)習(xí) ES6 中的 Map(映射)。上一章節(jié)我們學(xué)習(xí)了 [Set(集合)]()的相關(guān)...
閱讀 1401·2023-04-25 18:34
閱讀 3463·2021-11-19 09:40
閱讀 2840·2021-11-17 09:33
閱讀 2960·2021-11-12 10:36
閱讀 2843·2021-09-26 09:55
閱讀 2666·2021-08-05 10:03
閱讀 2530·2019-08-30 15:54
閱讀 2876·2019-08-30 15:54