ES 6精華:分解賦課値


一定のマッチングモードで、配列またはオブジェクトから対応する値を構成し、変数に値を割り当てます.
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つの構成をサポートしています.(argumentsNodeListnew 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