ES6 變數結構賦值筆記
變數的解構賦值
其實是挺好理解的,用一條式子可以很容易明白
let [foo, [[bar], baz]] = [1, [[2], 3]];
let [a, b, c] = [1, 2, 3];
類似於模式匹配的賦值模式,長得一樣的就可以完美賦值
1、陣列解構
let [ , , third] = ["foo", "bar", "baz"]; third // "baz" let [x, , y] = [1, 2, 3]; x // 1 y // 3 let [head, ...tail] = [1, 2, 3, 4]; head // 1 tail // [2, 3, 4] let [x, y, ...z] = ['a']; x // "a" y // undefined z // []
ps:這裡可以說一下...X
,這個符號是什麼意思呢?還是通過式子可以比較清晰的說明:
## 1、展開運算子 let a = [1,2,3]; let b = [0, ...a, 4]; // [0,1,2,3,4] ## 一樣是展開代表元素的意思 let obj = { a: 1, b: 2 }; let obj2 = { ...obj, c: 3 }; // { a:1, b:2, c:3 } let obj3 = { ...obj, a: 3 }; // { a:3, b:2 } ## 2、解構的一種,叫做剩餘操作符 let a = [1,2,3]; let [b, ...c] = a; b; // 1 c; // [2,3] // 也可以 let a = [1,2,3]; let [b, ...[c,d,e]] = a; b; // 1 c; // 2 d; // 3 e; // undefined // 也可以 function test(a, ...rest){ console.log(a); // 1 console.log(rest); // [2,3] } test(1,2,3)
#### 2、物件解構
下面模式p是一個模式,但這樣寫也是一個物件
let obj = {p: [
'Hello',
{ y: 'World' }
]
};
let { p, p: [x, { y }] } = obj;
x // "Hello"
y // "World"
p // ["Hello", {y: "World"}]
3、字串的解構賦值
const [a,b,c,d,e]='hello',
a //"h"
b //"e"
let {length:len} ='hello';
len //5陣列物件的length屬性
4、函式引數的解析賦值
function([x,y]){ return x+y; } add([1,2]);//3
5、對函式引數使用預設值
function move({x = 0, y = 0} = {}) {
return [x, y];
}
move({x: 3, y: 8}); // [3, 8]
move({x: 3}); // [3, 0]
move({}); // [0, 0]
move(); // [0, 0]
上面的例子可以看到,傳參為空的話就會使用預設值,下面是Chrome的控制檯下打印出來的結果:
function move({x=0,y=0}={}){
return [x,y];
}
undefined
move({s:3,y:8});
(2) [0, 8]
move({x:3,y:8});
(2) [3, 8]
move({x:3});
(2) [3, 0]
move({y:3});
(2) [0, 3]
move({});
(2) [0, 0]
下面是一種跟上面不一樣的操作:
function move({x, y} = { x: 0, y: 0 }) {
return [x, y];
}
move({x: 3, y: 8}); // [3, 8]
move({x: 3}); // [3, undefined]
move({}); // [undefined, undefined]
move(); // [0, 0]
這個函式和上面的不同點在於這個函式只有未傳參(傳參為空)的時候才會是用預設值。
[1, undefined, 3].map((x = 'yes') => x);
// [ 1, 'yes', 3 ]
這裡,map函式會遍歷所有引數,如果沒有引數傳進來,或者傳進來的引數為undefined的時候,會為該引數傳輸一個處理函式吧(下面是Chrome控制檯輸出)
[1,undefined,3].map((x='yes') => x);
(3) [1, "yes", 3]
[1,null,3].map((x='yes') => x);
(3) [1, null, 3]
[1,'',3].map((x='yes') => x);
(3) [1, "", 3]
ES6 規則:
只要可能導致解構的歧義,就不得使用圓括號。
(嚴謹模式)
解構模式的應用
1、互動變數的值
let x = 1;
let y = 2;
[x, y] = [y, x];
程式碼相當的少。很舒服
2、從函式返回多個值
//返回一個數組
function example(){
return [1,2,3];
}
let [a,b,c]=example();
//返回一個物件
function example(){
return{
foo:1,
bar:2
}
}
let {foo,bar}=example();
3、函式引數的定義
//引數是一組有次序的值
function f([x,y,z]){----}
f([1,2,3]);
//引數無次序
function f({x,y,z}){----}
f({z:3,y:2,x:1})//無序呼叫
4、提取JSON資料
let jsonData = {
id: 42,
status: "OK",
data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);
// 42, "OK", [867, 5309]
5、設定函式的預設值,
例子在上面有(ES6規則上面)
6、便利Map結構
const map = new Map();
map.set('first', 'hello');
map.set('second', 'world');
for (let [key, value] of map) {
console.log(key + " is " + value);
}
// first is hello
// second is world
7、輸入模組的制定方法
其實一直都在用的
const { SourceMapConsumer, SourceNode } = require("source-map");
上面的是今天檢視阮一峰的ecmaScript6入門的一些筆記吧,挺多新奇的概念和用法,看以後實戰能不能嘗試加上去!起碼在交換和設定預設值,這種用法就相當的整潔。不用寫太多冗餘的程式碼。結
相關推薦
ES6 變數結構賦值筆記
變數的解構賦值 其實是挺好理解的,用一條式子可以很容易明白 let [foo, [[bar], baz]] = [1, [[2], 3]]; let [a, b, c] = [1, 2, 3]; 類似於模式匹配的賦值模式,長得一樣的就可以完美賦值
ES6的 結構賦值----簡單demo
<script type="text/javascript"> // 解構賦值 { let [a,b,c] = [1,2,3]; console.log(a,b,c); //1 2 3 } //巢狀
es6學習筆記之環境搭建與結構賦值
全域性安裝Babel-cli 在終端中輸入以下命令,如果你安裝很慢的話,可以使用淘寶映象的cnpm來進行安裝。安裝cnpm的方法,大家自己百度吧。 npm install -g babel-cli 雖然已經安裝了babel-cli,只是這樣還不能成功進行轉換,如果你不相信可以輸入下邊的命令
JavaScript中 ES6變數的結構賦值
變數的結構賦值使用者很多 1、交換變數的值 let x = 1; let y = 2; [x,y] = [y,x] 上面的程式碼交換變數x和變數y的值,這樣的寫法不僅簡潔,易讀,語義非常清晰 2、從函式返回多個值 函式只能返回一個值,如果要返回多個值,只能講他們放在陣列或者物件裡返回。瞭解 解構賦值 ,取值
JS ES6的變量的結構賦值
req style fir 語句 多個 cti turn 清晰 rst 變量的結構賦值用戶很多 1、交換變量的值 let x = 1; let y = 2; [x,y] = [y,x] 上面的代碼交換變量x和變量y的值,這樣的寫法不僅簡潔,易讀,語義非常清
ES6 物件解構賦值和陣列結構賦值
1、解構物件 1.1、解構單層物件 1.1.1、解構單層物件——不賦值 let data = { id: 1, name: 'Jack' } let { id, name } = data
C語言中結構體變數之間賦值
/********************************************************************** * 版權所有 (C)2015, Zhou Zhaoxiong。 * * 檔名稱:Struct2Struct.c * 檔案標識:無 * 內容摘要:結構體變數之間的賦值
ES6的陣列結構賦值
基本用法 * ES允許按照一定模式,從事狐族和物件中提取值,對變數進行賦值。這被稱之為結構。* 通常,我們賦值一般都會採用以下的這種方式 var a = 3; var b = 'string'; // es6寫法 v
day46homework常量字符串拼接結構賦值擴展運算符for-of循環map函數默認值
html javascript css <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>01定義常量.html</title>
ES6解構賦值
所有 含義 提取 處理 s函數 事情 數據結構 無法 defined 前面的話 我們經常定義許多對象和數組,然後有組織地從中提取相關的信息片段。在ES6中添加了可以簡化這種任務的新特性:解構。解構是一種打破數據結構,將其拆分為更小部分的過程。本文將詳細介紹ES6解構賦值
es6--解構賦值-用途
set post new fun json val con blog 默認值 // 1:交換變量的值 let a = 1; let b = 2; console.log(a,b); [a,b] = [b,a]; console.log(a,b) // 2:函數返回多個值
js es6 解構賦值
等號 {} 如果 math define col 對象 obj es6 解構賦值:es6允許按照一定的模式,從數組或對象中提取值 let [a,b,c] = [1,2,3]; let {a,b}= {a:1,b:2}; 對象 let {a,b}= {b:1,a:2
es6 解構賦值
必須 內部 有一個 沒有 RR 元素 es6 aaa fin 對象的解構與數組有一個重要的不同。數組的元素是按次序排列的,變量的取值由它的位置決定;而對象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。 對象的解構賦值的內部機制,是先找到同名屬性,然後再賦給對應的變量
利用es6解構賦值快速提取JSON數據;
返回 接收 IT IV ava 交換變量 data names 參數 直接上代碼 { let JSONData = { title:‘abc‘, test:[ { nums:5, name:‘jobs‘ },
ES6 解構賦值的常見用途,很強大
常見 turn url 用途 amp first AS fir value 字符串 var [a,b,c,d,e] = "hello"; console.log(a); // h console.log(b); // e console.log(c);
Sql sever 宣告變數,賦值變數
語句: --宣告變數DECLARE @idcard nvarchar (50) , @rowid nvarchar (50) --給變數賦值SELECT @idcard = '{0}', @rowid = '{1}' SELECT COUNT (1) FRO
變數和賦值語句
變數 什麼是變數: 變數是關聯一個物件的識別符號 變數可以繫結一個物件,並可以通過變數名使用這個物件 識別符號的命名方法: 以字母或下劃線開頭,後跟字母下劃線或數字 說明: 識別符號區分大小寫 示例: a A a1 bbbb set_age _ _abcd __abcd
八大基本變數在賦值時需要注意的一個原則
java中的變數型別: 1.數值型變數: byte short int long(長度排序) 2.字元型別: char(單個字元) String(字串) 3.浮點型別: float(單精
Makefile初探3-變數的賦值運算子
(1) = 最簡單的賦值 用=賦值的變數,在被解析時他的值取決於最後一次賦值時的值,所以你看變數引用的值時不能只往前面看,還要往後面看。 注意:Makefile中並不要求賦值運算子兩邊一定要有空格或者無空格,這一點比shell的格式要求要鬆一些。 1 A=abc 2 B=$(A)
Shell中的多變數動態賦值問題
實際文字處理的時候會碰到多個變數,動態賦值的問題。比如說在遍歷1到100的數字,將其動態賦值給 var_1=1 var_2=2 var_3=3 ...... var_100=100 如果按常規的話,是賦值不成功,這個時候要藉助declare和export來完成 藉助decla