摘要:是國際組織于年月日發布的第六版,正式名為通常被成為或。二模版字面量提供一種簡單實現表達式嵌套的字符串字面量操作,簡而言之就是能夠以簡單的方法實現字符串拼接操作。
本文同步 帶你入門 JavaScript ES6 (一),轉載請注明出處。
ES6: 是 ECMA國際組織于 2015 年 6 月 17 日發布的 ECMAScript 第六版,正式名為 ECMAScript 2015,通常被成為 ES6 或 ECMAScript 6。
目錄:
一、let 和 const 聲明塊作用域變量
二、模版字面量
三、解構賦值
四、對象字面量簡寫
五、默認參數
一、 let 和 const 聲明塊作用域變量ES6 引入 let 和 const 作為塊作用域(用花括號 {} 表示)變量聲明語法,用法同之前的 var 聲明變量類似。不同之處在于不會對申明的變量(或常量)提升作用域范圍
1.1 let 變量聲明
let 語法用于聲明塊作用域內的可重新賦值的變量,作用域內無法重新聲明
MDN let
let name = "huliuqing" name = "Hu Liuqing" console.log(name)
1.2 const 常量聲明
const 語法用于聲明是必須 賦值初始值,并且無法重新復制,作用域內不能重新聲明
MDN const
const PI = 3.14 PI = 3.1415 //報錯 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) //運行如下 ------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 代碼塊內
當在 if 代碼塊外調用isSpring, theSeason, SUMMER_SEASON時,由于 let 和 const 塊作用域特性會在控制臺報 not defined 錯誤;而 var 定義的 theSeason 不會報錯而僅輸出 undefined,這是因為 var 聲明的變量將作用域范圍提升至 getSeason 作用域范圍內。
二、 模版字面量提供一種簡單實現表達式嵌套的字符串字面量操作,簡而言之就是能夠以簡單的方法實現字符串拼接操作。
模版字面量
2.1 ES6 之前字符串拼接實現
let name = "huliuqing" let age = 18 let conent = "你的名字:" + name + " 你今年幾歲了?" + age
隨著拼接內容的增多,拼接操作越加復雜
2.2 ES6 使用飄號(``: 同 ~ 號在同一鍵位) 聲明字符串字面量
let result = `請計算 1 + 2 的結果 ${1 + 2}` console.log(result); let name = "huliuqing" console.log(`你的名字?${name}`)三、 解構賦值
將值從數組或對象屬性提取到不同變量中
MDN 解構賦值
ES6 之前,如果我們需要將數組中元素或對象中屬性提取值并賦值給變量,實現起來比較復雜:
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)
解構賦值:語法同對象或數組初始化賦值語法,不同之處在于申明左側定義了需要賦值的變量數組或提取的對象屬性。
3.1 解構數組中的值
// 1 let seasons = ["Spring", "Summer", "Autumn", "Winter"] let [spring, summer, autumn, winter] = seasons // 將season 中的各個元素解構到左側變量 console.log(spring)// Spring console.log(summer)// Summer console.log(autumn)// Autumn console.log(winter)// Winter // 2 將數組中剩余部分賦值給一個變量 let [spring2, summer2, ...autumnAndWinter] = seasons console.log(spring2)//Spring console.log(summer2)// Summer console.log(autumnAndWinter)// ["Autumn", "Winter"]
3.2 解構對象中的值
// 1 let user = {name: "huliuqing", age: 18} let {name, age} = user console.log(name) console.log(age)
3.2 默認值
// 數組解構默認值 let [a = 5, b = 7] = [1] console.log(a)// 1 console.log(b)// 7 //對象解構默認值 let {name = "hlq", age = 18} = {name: "huliuqing"} console.log(name)// huliuqing console.log(age)// 18
3.3 解構數組時忽略某些值的解構
let [a, , c] = [1, 2, 3] console.log(a)// 1 console.log(c)// 3 let {name, , address} = {name: "huliuqing", age: 18, address: "shanghai"}四、 對象字面量簡寫
MDN 對象初始化
對象字面量簡寫,提供一種對初始化一個對象時,它的對象屬性名與待賦值的變量名同名的初始化簡寫方法
比較繞口?
4.1 ES6 之前對象初始化
let name = "huliuqing" let age = 18 let user = { name: name, age: age } console.log(user)// Object {name: "huliuqing", age: 18}
我們可以看到屬性的賦值方式 name: name,age: age, 這就是冗長的點。
4.2 對象字面量簡寫
let name = "huliuqing" let age = 18 let user = { name, age } console.log(user)// Object {name: "huliuqing", age: 18}
4.3 對象中方法簡寫
同屬性字面量簡寫類似,新的 ES6 語法提供了對象方法的簡寫
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五、默認參數
函數默認參數允許在函數沒有值或 undefined 被傳入時,使用默認形參
// 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 解構賦值
MDN 對象初始化
MDN 默認參數
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90422.html
摘要:上一篇學習下一代語法一,我們學習了關于塊作用域變量或常量聲明和語法新的字符串拼接語法模版字面量數組元素或對象元素的解構賦值和對象字面量簡寫的相關知識。這便是擴展運算符的用途之一。 本文同步 帶你入門 JavaScript ES6 (二),轉載請注明出處。 上一篇學習下一代 JavaScript 語法: ES6 (一),我們學習了關于塊作用域變量或常量聲明 let 和 const 語法、...
摘要:一概述集合是引入的新的內置對象類型,其特點同數學意義的集合,即集合內所有元素不重復元素唯一。數組集合對比數組和集合,數組可以加入重復數據,而集合的所有元素是唯一的不允許重復。因此,適合臨時存放一組對象,以及存放跟對象綁定的信息。 本文同步帶你入門 帶你入門 JavaScript ES6 (五) 集合,轉載請注明出處。 前面我們學習了: for of 變量和擴展語法 塊作用域變量和解構...
摘要:方法如示例中定義的方法靜態方法使用關鍵字修飾的方法,允許通過類名直接調用靜態方法而無需實例化。 本文同步帶你入門 JavaScript ES6 (四),轉載請注明出處。 前面我們學習了: for of 變量和擴展語法 塊作用域變量和解構 箭頭函數 本章我們將學習 ES6 中的 類,了解類基本定義和繼承相關知識 一、概述 ES6 中的 類 是基于原型的繼承語法糖,本質上它是一個 fu...
摘要:上一章我們學習了遍歷和擴展字符語法。本章我們主要學習中的箭頭函數箭頭函數更準確來說叫箭頭函數表達式。箭頭函數余普通函數功能相同,但語法差別比較大。 帶你入門 JavaScript ES6 (三) 本文同步帶你入門 JavaScript ES6 (三),轉載請注明出處。 上一章我們學習了 for of 遍歷和擴展字符語法。本章我們主要學習 ES6 中的箭頭函數 箭頭函數 更準確來說叫 箭...
摘要:初始化申明一個設置和獲取值使用設置新值或更新值申明設置值張三豐張三豐重復設置值如果鍵值存在則新值替換舊值張三豐使用獲取值,如果獲取的不存在返回分別獲取判斷是否存在使用判斷給定是否存在映射內。 本文同步帶你入門 帶你玩轉 JavaScript ES6 (六) - Map 映射,轉載請注明出處。 本章我們講學習 ES6 中的 Map(映射)。上一章節我們學習了 [Set(集合)]()的相關...
閱讀 1379·2023-04-25 18:34
閱讀 3437·2021-11-19 09:40
閱讀 2824·2021-11-17 09:33
閱讀 2935·2021-11-12 10:36
閱讀 2823·2021-09-26 09:55
閱讀 2653·2021-08-05 10:03
閱讀 2512·2019-08-30 15:54
閱讀 2861·2019-08-30 15:54