Es6-features 讀書心得

Default + Rest + Spread

Default

function f(x, y=12) {
  // y is 12 if not passed (or passed as undefined)
  return x + y;
}
function f(x) {
  var y = arguments.length <= 1 || arguments[1] === undefined ? 12 : arguments[1];

  console.log(arguments);
  // y is 12 if not passed (or passed as undefined)
  return x + y;
}
console.log(f(3), f(3, 4) == 15);

Rest parameters

function fun1(...theArgs) {
  console.log(theArgs.length);
}

fun1();  // 0
fun1(5); // 1
fun1(5, 6, 7); // 3
function fun1() {
  for (var _len = arguments.length, theArgs = Array(_len), _key = 0; _key < _len; _key++) {
    theArgs[_key] = arguments[_key];
  }

  console.log(theArgs.length);
}

fun1(); // 0
fun1(5); // 1
fun1(5, 6, 7); // 3

Spread operator

  • 更好用的apply
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction.apply(null, args);
  • powerful array literal
var parts = ['shoulders', 'knees'];
var lyrics = ['head', ...parts, 'and', 'toes']; // ["head", "shoulders", "knees", "and", "toes"]
  • Apply for new
var dateFields = readDateFields(database);
var d = new Date(...dateFields);