Home > Mobile >  JavaScript function that returns an object
JavaScript function that returns an object

Time:06-08

This function is supposed to return an object, however, the construction used below is unfamiliar to me. How does this function work?

function expect(value) {
  return {
    toBe: exp => console.log(success)
  }
}

CodePudding user response:

This is a standard JavaScript function:

function(parameter1, parameter2) {
    return returnVal;
}

But the object that is being returned looks like this:

{
    toBe: exp => console.log(success)
}

Which is an object containing an ES6 arrow function, and can be alternatively expressed like so (a direct translation to an ES5 function):

{
    toBe: function(exp) { 
        console.log(success);
        return undefined;
    }
}

Read here for more information on ES6 arrow function notation.

CodePudding user response:

I think it worth emphasizing that returns an object with a key that contains a function as a value. You can run it in the same way to run a method belonging to a class. Obliviously it fails because there is no success defined.

function expect(value) {
  return {
    toBe: exp => console.log(success)
  }
}

let res = expect('value')
console.log(res)
res.toBe('test')

I would say that this is the intent of the code, imo this makes a lot of sense; the evaluation is done when toBe is invoked, this invokes console.log(which tests the condition, when is invoked and prints the result):

function expect(value) {
  return {
    toBe: exp => console.log(exp === value)
  }
}

expect('value').toBe('value')
expect('notvalue').toBe('value')

  • Related