摘要:解構賦值的分類數組解構賦值對象解構賦值字符串解構賦值數值解構賦值布爾值解構賦值函數參數解構賦值。嵌套情況默認值解構賦值允許設置默認值,當數組成員嚴格等于,默認值將生效。報錯報錯函數參數的解構賦值函數的參數也可以使用解構賦值和指定默認值
ES6可以從數組和對象中提取值,然后對變量進行賦值。解構賦值的分類:數組解構賦值、對象解構賦值 、字符串解構賦值、數值解構賦值、布爾值解構賦值、 函數參數解構賦值。
1 數組的解構賦值 1.1 基本用法let [a, b, c] = [1, 2, 3]; //等同于 let a = 1; let b = 2; let c = 3;
如上所示,只要等號兩邊的模式相同,左邊的變量就會被賦予右邊對應的值。還可以使用嵌套數組進行結構。
let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3 let [x, , y] = [1, 2, 3]; x // 1 y // 21.2 解構不成功
如果結構不成功,變量的值就等于undefined。
let [x, y, ...z] = ["a"]; x // "a" y // undefined z // [] //以下兩種情況,foo的值都等于undefined。 let [foo] = []; let [bar, foo] = [1];1.3 不完全解構
即等號左邊的模式只匹配一部分等號右邊的數組,依然可以解構成功。
let[x, y] = [1, 2, 3]; x // 1 y // 2 //嵌套情況 let [a, [b], d] = [1, [2, 3], 4]; a // 1 b // 2 c // 41.4 默認值
解構賦值允許設置默認值,當數組成員嚴格等于undefined,默認值將生效。
let [x = 1] = [undefined]; x // 1 let [y = 1] = [null]; y // null2 對象的解構賦值
解構同樣適用于對象。
let {foo, bar, barz} = {foo: "aaa", bar: "bbb"}; foo // "aaa" bar // "bbb" barz // undefined
對象的解構賦值實際上是先找到同名屬性,然后再賦值給對應的變量,前者是匹配模式,后者才是真正的變量。
let { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" }; let obj = { first: "hello", last: "world" }; let { first: f, last: g } = obj; f // "hello" g // "world" first // first id not undefined
解構也可以用于嵌套結構的對象
let obj = { p: [ "hello", { y: "world" } ] }; let { p, p: [x, { y }] } = obj; x // "hello" y // "world" p // ["hello", { y: "world" }]
對象的解構同樣可以指定默認值
let { x = 1 } = {}; x // 13 字符串的解構賦值
字符串進行解構賦值時,會被轉換成一個類數組對象。
const [a, b, c] = "red"; a // "r" b // "e" c // "d"
類數組對象的length屬性也可以進行解構賦值
let { length: len } = "hello"; len // 54 數值和布爾值的解構賦值
解構賦值時,如果等號右邊不是數組和對象,則會先轉為對象,如果是undefined和null則無法轉為對象,此時會報錯。
let { toString: s } = 123; s === Nunmber.prototype.toString // true; let { toString: s } = true; s === Boolean.prototype.toString // true; let { prop : x } = undefined; // 報錯 let { prop : y } = null; // 報錯5 函數參數的解構賦值
函數的參數也可以使用解構賦值和指定默認值
function add([x, y]){ return x + y; } add([1,2]); // 3 function move({ x = 0, y = 0 } = {}) { return [x, y]; }; move({ x: 3, y: 8 }); // [3, 8]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109691.html
摘要:另外對于已經聲明的變量進行解構賦值時,要非常小心。因此在行首加,將其強制轉化為表達式執行。由于和無法轉為對象,所以對它們進行解構賦值,都會報錯。 let和const let和const是es6新增的兩個變量聲明關鍵字,與var的不同點在于: (1)let和const都是塊級作用域,在{}內有效,這點在for循環中非常有用,只在循環體內有效。var為函數作用域。 (2)使用let和con...
摘要:前言前言該篇筆記是第二篇變量的解構賦值。這一章原文鏈接變量的解構賦值解構賦值解構賦值允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構。對象的解構賦值是根據對象值進行匹配。前言該篇筆記是第二篇 變量的解構賦值。這一章原文鏈接: 變量的解構賦值解構賦值ES6 允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構(Destructuring)。解構賦值是對賦值運...
摘要:前言該篇筆記是第二篇變量的解構賦值。這一章原文鏈接變量的解構賦值解構賦值允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構。對象的解構賦值是根據對象值進行匹配。 前言該篇筆記是第二篇 變量的解構賦值。 這一章原文鏈接: 變量的解構賦值解構賦值ES6 允許按照一定模式,從數組和對象中提取值,對...
摘要:默認值同時,對象解構賦值也允許設置默認值,默認值生效的判斷條件同數組,只有在對應值嚴格等于時會生效。報錯如果要將一個已經聲明的變量用于解構賦值,必須非常小心。的規則是,只要有可能導致解構的歧義,就不得使用圓括號。 ECMAScript6/ES6 入門 let和const命令 四、變量的解構賦值 在ES6之前,數組和對象屬性賦值只能直接指定固定值,ES6 允許按照一定模式,從數組和對象中...
摘要:它是一個通用標準,奠定了的基本語法。年月發布了的第一個版本,正式名稱就是標準簡稱。結語的基本擴展還有一些沒有在這里詳細介紹。 前言 ES6標準以及頒布兩年了,但是,好像還沒有完全走進我們的日常開發。這篇文章從ES6的基本類型擴展入手,逐步展開對ES6的介紹。 ECMAScript和JavaScript JavaScript是由Netscape創造的,該公司1996年11月將JavaSc...
閱讀 2564·2021-10-11 10:58
閱讀 1147·2021-09-29 09:34
閱讀 1485·2021-09-26 09:46
閱讀 3830·2021-09-22 15:31
閱讀 730·2019-08-30 15:54
閱讀 1457·2019-08-30 13:20
閱讀 1251·2019-08-30 13:13
閱讀 1486·2019-08-26 13:52