ES 6学習ノート(五)--関数と対象
関数#カンスウ#
パラメータのデフォルト
基本的な使い方
デフォルト値の解釈と組み合わせて使用
restパラメータ(...変数名)
restパラメータの組み合わせの変数は、余分なパラメータを配列に入れる配列です.
拡張演算子(...)
配列をカンマで区切られたパラメータシーケンスに変換
適用連結配列 は、解体賦値と結合する である.文字列が真の配列 に変換される
矢印関数(=>)
に注意関数内のthisオブジェクトは、使用時に存在するオブジェクト ではなく、定義時に存在するオブジェクトである.は構造関数として使用できません.つまり、newコマンドを使用してはいけません.そうしないと、エラー が投げ出されます. argumentsオブジェクトは使用できません.このオブジェクトは関数内に存在しません.使用する場合は、 の代わりにRestパラメータを使用できます.はyieldコマンドを使用できないため、矢印関数はGenerator関数 として使用できません.
オブジェクト
Object.assign()
オブジェクトのマージに使用し、ソースオブジェクト(source)のすべての列挙可能なプロパティをターゲットオブジェクト(target)にコピーします.
この方法は、ソースオブジェクトの属性の値がオブジェクトである場合、ターゲットオブジェクトのコピーがこのオブジェクトの参照を得る浅いコピーを実行します.
パラメータのデフォルト
基本的な使い方
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;
};
に注意
オブジェクト
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}
この方法は、ソースオブジェクトの属性の値がオブジェクトである場合、ターゲットオブジェクトのコピーがこのオブジェクトの参照を得る浅いコピーを実行します.