Adam K Dean

Encapsulating console.log with spread operator

Published on 4 November 2015 at 11:00 by Adam

ES6 or ES2015 contains lots of goodies. One of them, my favourite, is the spread operator. It "allows an expression to be expanded in places where multiple arguments (for function calls) or multiple elements (for array literals) are expected."

For example, you can combine two arrays like so:

var start = ['a', 'b', 'c'],
    end = ['d', 'e', 'f'];

var combined = [...start, ...end];

console.log(combined);

// => ['a', 'b', 'c', 'd', 'e', 'f']

What I like even more, is that you can do this with function arguments. Let's say we wanted to wrap console.log so we can do something funky with it. This can easily be done using the spread operator.

var log = function (format, ...args) {
    if (args.length > 0) console.log(format, args);
    else console.log(format);
}

log('test');
log('this is an %s test', 'interpolation');

// => test
// => this is an interpolation test

This changes things. Read more at MDN.

ES7 should also bring object spread operators, so you can do { ...initial, ...change }.



This post was first published on 4 November 2015 at 11:00. It was filed under archive with tags javascript, es2015, es6.