JavaScript----變量的解構(gòu)賦值

  • ES6允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)
var arr = [1, 3, 5];
//會(huì)依次將數(shù)組中的內(nèi)容賦值給等號(hào)左邊[]中的變量
let [a, b, c] = arr;
//a = 1,b = 3,c = 5
  • 解構(gòu)不成功,變量的值為undefined
var arr = [1, 3, 5];
let [a,b,c,d] = arr;
// d = undefined
  • 如果變量右邊不是數(shù)組和對(duì)象(不具備Iterator接口) 會(huì)報(bào)錯(cuò)

解構(gòu)的默認(rèn)值

  • 解構(gòu)時(shí)可以給變量指定默認(rèn)值
  • ES6 內(nèi)部使用嚴(yán)格相等運(yùn)算符(===),判斷一個(gè)位置是否有值。所以,只有當(dāng)一個(gè)數(shù)組成員嚴(yán)格等于undefined,默認(rèn)值才會(huì)生效。
  • 默認(rèn)值可以是其他變量, 但必須其他變量已經(jīng)定義
let [foo = true] = [];
foo // true

let [x, y = 'b'] = ['a']; // x='a', y='b'
let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'

解構(gòu)對(duì)象

  • 變量名與屬性一樣的解構(gòu), 會(huì)將對(duì)象中和屬性名稱和解構(gòu)中變量名稱一致的賦值給解構(gòu)的變量
let obj = {
    name: "xxz",
    age: 13
};
let {name, age} = obj;
name //"xxz"
age //13
  • 變量名與屬性不一樣的解構(gòu), 必須寫成如下格式
let obj = {
    name: "xxz",
    age: 13
};
let {name : name2, age3 : age} = obj;
name2 //"xxz"
age3 //13
  • 和數(shù)組解構(gòu)類似, 也可以指定默認(rèn)值
  • 數(shù)值和bool值解構(gòu)會(huì)先轉(zhuǎn)換成對(duì)象
let {toString: s} = 123;
s === Number.prototype.toString // true

let {toString: s} = true;
s === Boolean.prototype.toString // true

解構(gòu)作為函數(shù)參數(shù)

let obj = {
    name: "lnj",
    age: 13
};
// 大大的提升了開發(fā)效率, 簡(jiǎn)化了代碼
function say({name, age}) {
    console.log(name, age);
}
say(obj);

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

  • 應(yīng)用場(chǎng)景:
    • 某一個(gè)函數(shù)的某些參數(shù)永遠(yuǎn)都是一些固定的值,
    • 獲取用于都是通過(guò)其它函數(shù)獲得的, 那么就可以使用默認(rèn)參數(shù)
 function Car(id) {
        this.id = id;
    }
    function createCar(id = getRandom()) {
        return new Car(id);
    }
    function getRandom() {
        return Math.random() * 10000;
    }
    // var c1 = createCar(getRandom());
    var c1 = createCar();
    console.log(c1);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)組的解構(gòu)賦值 基本用法 ES6允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destru...
    呼呼哥閱讀 472評(píng)論 0 3
  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評(píng)論 0 13
  • 1.數(shù)組的解構(gòu)賦值 2.對(duì)象的解構(gòu)賦值 3.字符串的解構(gòu)賦值 4.數(shù)值和布爾值的解構(gòu)賦值 5.函數(shù)參數(shù)的解構(gòu)賦值 ...
    卞卞村長(zhǎng)L閱讀 952評(píng)論 0 0
  • 登山嬉水且為樂(lè),賞花鋤禾話桑麻 朝暉落霞常作伴,不落紅塵英氣發(fā) 人生得意須盡歡,遭逢難事莫愁顏 狂風(fēng)過(guò)后仍晴日,瀟...
    鄉(xiāng)野蘭軒閱讀 361評(píng)論 0 3
  • 大飛入駐簡(jiǎn)書,以此留念
    孟飛閱讀 483評(píng)論 0 0

友情鏈接更多精彩內(nèi)容