ES 6学習ノート(五)--関数と対象


関数#カンスウ#
パラメータのデフォルト
基本的な使い方
function log(x, y = 'World') {
     
  console.log(x, y);
}

log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

デフォルト値の解釈と組み合わせて使用
function foo({x, y = 5}) {
     
  console.log(x, y);
}

foo({}) // undefined, 5
foo({x: 1}) // 1, 5
foo({x: 1, y: 2}) // 1, 2
foo() // TypeError: Cannot read property 'x' of undefined

restパラメータ(...変数名)
restパラメータの組み合わせの変数は、余分なパラメータを配列に入れる配列です.
function push(array, ...items) {
     
  items.forEach(function(item) {
     
    array.push(item);
    console.log(item);
  });
}

var a = [];
push(a, 1, 2, 3)

拡張演算子(...)
配列をカンマで区切られたパラメータシーケンスに変換
function f(v, w, x, y, z) {
      }
var args = [0, 1];
f(-1, ...args, 2, ...[3]);

適用
  • 連結配列
  • var arr1 = ['a', 'b'];
    var arr2 = ['c'];
    var arr3 = ['d', 'e'];
    
    // ES5     
    arr1.concat(arr2, arr3);
    // [ 'a', 'b', 'c', 'd', 'e' ]
    
    // ES6     
    [...arr1, ...arr2, ...arr3]
    // [ 'a', 'b', 'c', 'd', 'e' ]
  • は、解体賦値と結合する
  • である.
    const [first, ...rest] = [1, 2, 3, 4, 5];
    first // 1
    rest  // [2, 3, 4, 5]
  • 文字列が真の配列
  • に変換される
    [...'hello']
    // [ "h", "e", "l", "l", "o" ]

    矢印関数(=>)
    var f = v => v;
    
    //   
    
    var f = function(v) {
         
      return v;
    };

    に注意
  • 関数内のthisオブジェクトは、使用時に存在するオブジェクト
  • ではなく、定義時に存在するオブジェクトである.
  • は構造関数として使用できません.つまり、newコマンドを使用してはいけません.そうしないと、エラー
  • が投げ出されます.
  • argumentsオブジェクトは使用できません.このオブジェクトは関数内に存在しません.使用する場合は、
  • の代わりにRestパラメータを使用できます.
  • はyieldコマンドを使用できないため、矢印関数はGenerator関数
  • として使用できません.
    オブジェクト
    Object.assign()
    オブジェクトのマージに使用し、ソースオブジェクト(source)のすべての列挙可能なプロパティをターゲットオブジェクト(target)にコピーします.
    //    ,      
    var target = { a: 1, b: 1 };
    
    var source1 = { b: 2, c: 2 };
    var source2 = { c: 3 };
    
    Object.assign(target, source1, source2);
    target // {a:1, b:2, c:3}

    この方法は、ソースオブジェクトの属性の値がオブジェクトである場合、ターゲットオブジェクトのコピーがこのオブジェクトの参照を得る浅いコピーを実行します.