ES 6精華:分解賦課値
2023 ワード
一定のマッチングモードで、配列またはオブジェクトから対応する値を構成し、変数に値を割り当てます.
迅速な宣言と属性値を付与します.
オブジェクトがオブジェクトでない場合は、オブジェクトは対応するタイプのオブジェクトに変換されます.
左の構文は右の構文値をどう見るかを決定します.解凍器
元のクラスの配列オブジェクトには反復インターフェースがあり、2つの構成をサポートしています.(
解決が失敗しました
右側に対応する値がありません.解決策はエラーなく、変数値は
右側の値(変換後を含む)が左のタイプを満たしていない場合は、解凍に失敗します.
割り当てられる変数のデフォルト値を指定できます.デフォルトの値は、構文内の他の変数を使用できますが、変数の構文はこれまでに必要です.
let [a] = [3]; // a = 3
let [, a] = [3, [7]]; // a = [7]
let {a} = {a: 3}; // a = 3,{a} {a: a}
let {a: {b}} = {a: {b: 3}}; // b = 3
使用例迅速な宣言と属性値を付与します.
// ---
let id = obj.id;
let name = obj.name;
let ago = obj.ago;
// ---
let { id, name, ago } = obj;
関数構成パラメータの構成と標準値の割り当て// ---
function dealUser(id, conf) {
let name = conf.name || '';
let ago = conf.ago || 0;
}
// ---
// name , ( )。
function dealUser(id, {
name = '',
ago = 0
}) {
//
}
オブジェクトを分割オブジェクトがオブジェクトでない場合は、オブジェクトは対応するタイプのオブジェクトに変換されます.
NaN
は、Number
アーキテクチャー関数を使用して生成されてもよく、解凍されてもよい.null
およびundefined
は単一の値であり、対応するコンストラクタがなく、構成を解くことができない.let {length: a} = 'ab'; // a = 2
//
let {length: a} = new String('ab'); // a = 2
let {toString: a} = NaN; // a = function
let {toString: a} = null; //
解凍方式左の構文は右の構文値をどう見るかを決定します.解凍器
{}
は、右側の値を対象としてオブジェクトを解凍することを意味する.解構成子[]
は、右側の値を配列として、配列解を採用することを意味する.このように推論されてもよい.配列すなわちサポート配列は、オブジェクトの解凍にも対応している.元のクラスの配列オブジェクトには反復インターフェースがあり、2つの構成をサポートしています.(
arguments
、NodeList
、new String()
)let [a] = 'ab'; // a = 'a',a 。
let {length: a} = 'ab'; // a = 2
let {length: a} = ['a', 'b']; // a = 2
let [a] = {0: a, length: 1}; // , 。
解決に失敗しました解決が失敗しました
右側に対応する値がありません.解決策はエラーなく、変数値は
undefined
です.let [a, b] = [1]; // a = 1, b = undefined
構成エラー右側の値(変換後を含む)が左のタイプを満たしていない場合は、解凍に失敗します.
let [[a]] = [1]; // , 1 。
let [a] = {a: 3}; // , {a: 3} 。
標準値を指定割り当てられる変数のデフォルト値を指定できます.デフォルトの値は、構文内の他の変数を使用できますが、変数の構文はこれまでに必要です.
let [a, b = 2] = [1]; // a = 1, b = 2
let [a, b = a] = [1]; // a = 1, b = 1