国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ECMAScript6 新特性——“變量的解構(gòu)賦值”

Eric / 1438人閱讀

摘要:數(shù)組的解構(gòu)賦值允許按照一定模式,從數(shù)組和對象中提取值,對變量進行賦值,這被稱為解構(gòu)。如果變量名與屬性名不一致,必須寫成下面這樣。

1 數(shù)組的解構(gòu)賦值

ES6允許按照一定模式,從數(shù)組和對象中提取值,對變量進行賦值,這被稱為解構(gòu)(Destructuring)。

基本用法

{
    var [a,[b,c],d,,...f] = [1,[2,3],4,5,6,7];
    console.log(a); //1
    console.log(b); //2
    console.log(c); //3
    console.log(d); //4
    console.log(f); //[6,7]
}

另一種情況是不完全解構(gòu),解構(gòu)賦值不僅適用于var命令,也適用于let和const命令

let [a,[b],c] = [1,[2,3],4];
console.log(a,b,c); //1 2 4

默認(rèn)值

解構(gòu)賦值允許指定默認(rèn)值,必須嚴(yán)格等于undefined時才會生效

let [a,b = 1] = [1,undefined];
console.log(a,b); //1 1

如果默認(rèn)值是一個表達(dá)式,那么這個表達(dá)式是默認(rèn)求值的

let [a = f()] = [undefined];
function f() {
    return 2;
}
console.log(a); //2如果不是undefined,f()不會求值
2 對象的解構(gòu)賦值

解構(gòu)不僅可以用于數(shù)組,還可以用于對象。

let {a,b} = {a: 1, b:2}
console.log(a,b); //1 2

如果變量名與屬性名不一致,必須寫成下面這樣。

let {a:a2,b} = {a: 1, b:2}
console.log(a2,b); //1 2

對于let、const而言,變量不能重新聲明,所以一旦賦值的變量之前聲明過,則會報錯

let a2
let {a:a2,b} = {a: 1, b:2}
console.log(a2,b); //Identifier "a2" has already been declared

所以需要寫成下面的形式:

let a2
({a:a2,b} = {a: 1, b:2})
console.log(a2,b); //1 2

這里需要加上小括弧,因為要避免JS引擎將{x}理解為一個代碼塊

也可以用于嵌套解構(gòu)的對象

var obj = {
    persion: [
        {name: "Oliver"},
        {friends: ["Alice", "Troy"]}
    ]
}
var {persion: [{name},{friends}]} = obj;
console.log(name,friends); //Oliver ["Alice", "Troy"]

對象的解構(gòu)也可以指定默認(rèn)值

var {prop:x = 3} = {prop:undefined};
console.log(x); //3

默認(rèn)值生效的條件是對象的屬性值嚴(yán)格等于undefined

對象的解構(gòu)賦值可以很方便地將現(xiàn)有對象的方法賦值到某個變量

var obj = {
    name: "Oliver",
    age: 18
};
var {name,age: x} = obj;
console.log(name,x); //Oliver 18
3 字符串的解構(gòu)賦值

字符串也可以解構(gòu)賦值

var {string: [a,b,c]} = {string: "str"};
console.log(a,b,c); //s t r

也可以訪問其屬性

var {length: len} = "hello";
console.log(len); //5
4 數(shù)值和布爾值的解構(gòu)賦值

解構(gòu)賦值時,如果等號右邊是數(shù)值和布爾值,則會先轉(zhuǎn)為對象。

let {toString: str} = 123;
console.log(str); //toString() { [native code] }
//兩者都有toString方法(函數(shù))
5 函數(shù)參數(shù)的解構(gòu)賦值

函數(shù)的參數(shù)也可以解構(gòu)賦值

function add([x,y]) {
    console.log(x+y);
}
add([1,2]); //3

也可以使用默認(rèn)值

function add([x,y] = [0,0]) {
    console.log(x+y);
}
add([1,2]); //3
add(); //0
6 圓括號問題

盡量不要在模式中使用圓括號

7 實際用途

交換變量的值

var [x,y] = [1,2];
[x,y] = [y,x];
console.log(x,y); //2 1

從函數(shù)返回多個值

//返回數(shù)組
function init() {
    return [1,2,3];
}
var [a,b,c] = init();
console.log(a,b,c); //1 2 3

//返回對象
function init() {
    return {
        name: "Oliver",
        age: 18
    };
}
var {name: n, age: a} = init();
console.log(n,a); //Oliver 18
var {name} = init();
console.log(name); //Oliver

函數(shù)參數(shù)的定義

//有序的數(shù)組
function init([x,y,z]) {
    return x+y+z;
}
console.log(init([1,2,3])); //6

//無序的對象
function init({x,y,z}) {
    return x+y+z;
}
console.log(init({z:1,y:2,x:3})); //6

提取JSON數(shù)據(jù)

var obj = {};
var jsonData = {
    name: "Oliver",
    id: "007",
    upload: [1,2,3]
};
{
    let {name,id,upload} = jsonData;
    console.log(name,id,upload); //Oliver 007 [1, 2, 3]
}

函數(shù)參數(shù)默認(rèn)值

function f([x,y] = [1,1]) {
    console.log(x+y);
}
f(); //2

遍歷Map結(jié)構(gòu)

var 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

輸入模塊的指定方法

const { SourceMapConsumer, SourceNode } = require("source-map");

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79059.html

相關(guān)文章

  • ECMAScript6標(biāo)準(zhǔn)入門(一)變量與數(shù)據(jù)結(jié)構(gòu)

    摘要:一簡介與的關(guān)系是的規(guī)格,是的一種實現(xiàn)另外的方言還有和轉(zhuǎn)碼器命令行環(huán)境安裝直接運行代碼命令將轉(zhuǎn)換成命令瀏覽器環(huán)境加入,代碼用環(huán)境安裝,,根目錄建立文件加載為的一個鉤子設(shè)置完文件后,在應(yīng)用入口加入若有使用,等全局對象及上方法安裝 一、ECMAScript6 簡介 (1) 與JavaScript的關(guān)系 ES是JS的規(guī)格,JS是ES的一種實現(xiàn)(另外的ECMAScript方言還有Jscript和...

    Tangpj 評論0 收藏0
  • ES6學(xué)習(xí)摘要(02)(人學(xué)習(xí))

    摘要:默認(rèn)值同時,對象解構(gòu)賦值也允許設(shè)置默認(rèn)值,默認(rèn)值生效的判斷條件同數(shù)組,只有在對應(yīng)值嚴(yán)格等于時會生效。報錯如果要將一個已經(jīng)聲明的變量用于解構(gòu)賦值,必須非常小心。的規(guī)則是,只要有可能導(dǎo)致解構(gòu)的歧義,就不得使用圓括號。 ECMAScript6/ES6 入門 let和const命令 四、變量的解構(gòu)賦值 在ES6之前,數(shù)組和對象屬性賦值只能直接指定固定值,ES6 允許按照一定模式,從數(shù)組和對象中...

    Jonathan Shieber 評論0 收藏0
  • 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

    摘要:情況一情況二這兩種情況,根據(jù)的規(guī)定都是非法的。的作用域與命令相同只在聲明所在的塊級作用域內(nèi)有效。因此,將一個對象聲明為常量必須非常小心。頂層對象的屬性與全局變量掛鉤,被認(rèn)為時語言最大的設(shè)計敗筆之一。 這是ES6的入門篇教程的筆記,網(wǎng)址:鏈接描述,以下內(nèi)容中粗體+斜體表示大標(biāo)題,粗體是小標(biāo)題,還有一些重點;斜體表示對于自身,還需要下功夫?qū)W習(xí)的內(nèi)容。這里面有一些自己的見解,所以若是發(fā)現(xiàn)問題...

    AZmake 評論0 收藏0
  • ES6基礎(chǔ)

    一、塊級作用域 1. var 首先看看ES5中得變量聲明方式 if (true) { var a = 2 } console.log(a) // 2 以上代碼等同于 var a if (true) { a = 2 } console.log(a) 以上可知 : 在塊內(nèi)部定義變量 變量提升,到函數(shù)最頂部 通過var聲明的變量,無論在何處聲明,均為全局作用域 2.let 和 ...

    BigTomato 評論0 收藏0

發(fā)表評論

0條評論

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