成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES6解構(gòu)賦值

Muninn / 3457人閱讀

摘要:一數(shù)組解構(gòu)賦值解構(gòu)賦值也可嵌套賦值結(jié)果結(jié)果結(jié)果結(jié)果如果解構(gòu)不成功,變量就會等于。解構(gòu)賦值允許指定默認(rèn)值。例如數(shù)組對象如果變量名與屬性名稱不一致必須寫成下面這樣和不允許重新聲明其他同數(shù)組解構(gòu)賦值。

一、數(shù)組解構(gòu)賦值:
var a = 1;
var b = 2;
var c = 3;
解構(gòu)賦值:
var [a,b,c] = [1,2,3];
let [a,b,c] = new Set([1,2,3]);
也可嵌套賦值:
let [foo,[[bar],[baz]]] = [1,[[2],[3]]];
結(jié)果:
foo //  1; bar // 2; baz // 3;
 
let [,,third] == ["foo","bar","baz"];
結(jié)果:
third // "baz";
 
let [head, ...tail] = [1,2,3,4];
結(jié)果:
head // 1;
tail // [2,3,4];
 
let [x, y, ...z] = ["a"];
結(jié)果: 
x // "a"; 
y // undefined;
z // [];
 
如果解構(gòu)不成功,變量就會等于undefined。
var [foo] == [];  foo // undefined
var [bar,foo] == [1];  foo // undefined
 
 
不完全解構(gòu)
let [x,y] = [1,2,3];
x // 1
y // 2
 
let [a,[b],c] = [1,[2,3],4];
a // 1;
b // 2;
c // 4;
 
只要某種數(shù)據(jù)解構(gòu)具有迭代接口,都可以采用數(shù)組形式的解構(gòu)賦值。
 
解構(gòu)賦值允許指定默認(rèn)值。
var [foo = true] = []; foo // true
let [x, y="b"] = ["a"]; //x = "a"; y = "b"
let [x, y="b"] = ["a",undefined]; //x = "a"; y = "b"
ES6內(nèi)部使用(===)完全等于來判斷一個位置是否有值,所以,如果一個數(shù)組成員不嚴(yán)格等于undefined,默認(rèn)值不會生效。
var [x = 1] = [undefined]; x // 1
var [x = 1] = [null]; x // null
上面如果一個數(shù)組成員是null,默認(rèn)值就不會生效,因為null不嚴(yán)格等于undefined
 
解構(gòu)賦值的惰性取值:
function f(){ return "aaa"};
let [x = f()] = [1];
x // 1
上面代碼中x可以取到值1,所以就不會執(zhí)行表達式,所以x = 1,等價于下面代碼
var x;
if([1][0] === undefined){x =f()}else{x = [1][0]}
變賦值之前必須聲明
二、對象解構(gòu)賦值
var {foo, bar} = {foo:"aaa", bar:"bbb"};
foo // "aaa"
bar // "bbb"
*對象的解構(gòu)賦值與數(shù)組一個重要的不同。數(shù)組必須是按次序排列,變量取值由未知決定;
而對象的屬性沒次序,變量必須與屬性同名,才能取到正確的值。例如:
數(shù)組:let [x,y] = [1,2];  // x = 1,  y = 2
對象:var {foo, bar} = {bar:"aaa", foo:"bbb"}; // foo = "bbb", bar = "aaa"
var {baz} = {bar:"aaa"} // baz = "undefined"
如果變量名與屬性名稱不一致;必須寫成下面這樣:
var {foo:baz} = {foo: "aaa", bar: "bbb"};  // baz = "aaa"
let和const不允許重新聲明!
其他同數(shù)組解構(gòu)賦值。
三、字符串解構(gòu)賦值
const [a,b,c,d,e] = "hello"; // a="h", b="e"... e="o";
類似與數(shù)組對象都有長度(length屬性);因此還可以對這個屬性解構(gòu)賦值
let {length : len} = "hello"; // len = 5
四、數(shù)值和布爾值得解構(gòu)賦值
let {toString: s} = 123;
s === Number.prototype.toString // true
let {toString: s} = true;
s === Boolean.prototype.toString // true
五、函數(shù)參數(shù)的解構(gòu)賦值
function add([x,y]){
return  x+y;
}
add([1,2]); // 3
[[1,2],[3,4]].map(([a,b]) => a+b); // [3,7];
函數(shù)參數(shù)的解構(gòu)也可以使用,默認(rèn)值
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]
undefined會觸發(fā)函數(shù)的默認(rèn)值
[1,undefined,3].map((x = "yes")=>x) // [1,"yes",3]

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88124.html

相關(guān)文章

  • ES6 學(xué)習(xí)筆記(一)let,const和解構(gòu)賦值

    摘要:另外對于已經(jīng)聲明的變量進行解構(gòu)賦值時,要非常小心。因此在行首加,將其強制轉(zhuǎn)化為表達式執(zhí)行。由于和無法轉(zhuǎn)為對象,所以對它們進行解構(gòu)賦值,都會報錯。 let和const let和const是es6新增的兩個變量聲明關(guān)鍵字,與var的不同點在于: (1)let和const都是塊級作用域,在{}內(nèi)有效,這點在for循環(huán)中非常有用,只在循環(huán)體內(nèi)有效。var為函數(shù)作用域。 (2)使用let和con...

    iOS122 評論0 收藏0
  • es6 - 解構(gòu)賦值

    摘要:比如上面展示的情況都是可以聯(lián)合使用的比如對象的解構(gòu)賦值對象的解構(gòu)賦值是基于屬性的。當(dāng)給已存在的變量解構(gòu)賦值時,注意加這是由于如果不加會把左邊看成一個代碼塊,會報錯。注意事項數(shù)組的解構(gòu)賦值中,使用的變量必須放在最后。 解構(gòu)賦值 解構(gòu)賦值是一個聽起來比較高大上的特性,但按我的理解,它就是一種語法糖。它并沒有賦予js更強大的能力,只是讓賦值操作更加的靈活,效率。 在es6之前,賦值操作需要=...

    DirtyMind 評論0 收藏0
  • ES6學(xué)習(xí) 第二章 變量的解構(gòu)賦值

    摘要:前言前言該篇筆記是第二篇變量的解構(gòu)賦值。這一章原文鏈接變量的解構(gòu)賦值解構(gòu)賦值解構(gòu)賦值允許按照一定模式,從數(shù)組和對象中提取值,對變量進行賦值,這被稱為解構(gòu)。對象的解構(gòu)賦值是根據(jù)對象值進行匹配。前言該篇筆記是第二篇 變量的解構(gòu)賦值。這一章原文鏈接: 變量的解構(gòu)賦值解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對象中提取值,對變量進行賦值,這被稱為解構(gòu)(Destructuring)。解構(gòu)賦值是對賦值運...

    番茄西紅柿 評論0 收藏2637
  • ES6學(xué)習(xí) 第二章 變量的解構(gòu)賦值

    摘要:前言該篇筆記是第二篇變量的解構(gòu)賦值。這一章原文鏈接變量的解構(gòu)賦值解構(gòu)賦值允許按照一定模式,從數(shù)組和對象中提取值,對變量進行賦值,這被稱為解構(gòu)。對象的解構(gòu)賦值是根據(jù)對象值進行匹配。 前言該篇筆記是第二篇 變量的解構(gòu)賦值。 這一章原文鏈接: 變量的解構(gòu)賦值解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對象中提取值,對...

    番茄西紅柿 評論0 收藏2637
  • ES6-變量的解構(gòu)賦值(3)

    摘要:數(shù)組的解構(gòu)賦值特點根據(jù)數(shù)據(jù)的下標(biāo)來賦值的,有次序。模式能夠匹配起來,如長度為數(shù)值和布爾值的解構(gòu)賦值解構(gòu)賦值的規(guī)則是只要等號右邊的值不是對象或數(shù)組,就先將其轉(zhuǎn)為對象。布爾值解構(gòu)賦值為字符串的一種。在很多獨立細(xì)小的方面,解構(gòu)賦值都非常有用。 1、解構(gòu)賦值簡介 官方解釋:按照一定的模式,從數(shù)組和對象中提取值,對變量進行賦值,這被稱為解構(gòu)(Destructuring)。 舉個例子,想獲取數(shù)組中...

    Jason_Geng 評論0 收藏0
  • ES6學(xué)習(xí)2》 變量的解構(gòu)賦值

    摘要:解構(gòu)賦值的分類數(shù)組解構(gòu)賦值對象解構(gòu)賦值字符串解構(gòu)賦值數(shù)值解構(gòu)賦值布爾值解構(gòu)賦值函數(shù)參數(shù)解構(gòu)賦值。嵌套情況默認(rèn)值解構(gòu)賦值允許設(shè)置默認(rèn)值,當(dāng)數(shù)組成員嚴(yán)格等于,默認(rèn)值將生效。報錯報錯函數(shù)參數(shù)的解構(gòu)賦值函數(shù)的參數(shù)也可以使用解構(gòu)賦值和指定默認(rèn)值 ES6可以從數(shù)組和對象中提取值,然后對變量進行賦值。解構(gòu)賦值的分類:數(shù)組解構(gòu)賦值、對象解構(gòu)賦值 、字符串解構(gòu)賦值、數(shù)值解構(gòu)賦值、布爾值解構(gòu)賦值、 函數(shù)參...

    mist14 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<