Search code examples
javascriptjqueryequalityfunction-calltriple-equals

Meaning of === with function call


I had been going through the ES6 assuming that it would be easy to switch to EcmaScript 2017.

While going through, I got confused about this code

function f (x, y = 7, z = 42) {
    return x + y + z
}
f(1) === 50

Which has ES5 equivalent

function f (x, y, z) {
    if (y === undefined)
        y = 7;
    if (z === undefined)
        z = 42;
    return x + y + z;
};
f(1) === 50;

I did understand the default parameter thing from it.

But what does f(1)===50 mean in both the codes? Whats the use of it?

Here is another example

function f (x, y, ...a) {
    return (x + y) * a.length
}
f(1, 2, "hello", true, 7) === 9

What does f(1, 2, "hello", true, 7) === 9 mean?

I understand that === for comparison between the LHS and RHS of the operator including the type of both and not just value.

But why have it been used like that??

Kindly explain its usage.

This is the link from where I got this. http://es6-features.org/#RestParameter


Solution

  • According to me, you almost took it in a correct way.

    Just put that function call along with the triple equals sign in if condition.

    if ( f(1) === 50 ){
        console.log(true);
    }
    else {
        console.log(false);
    }
    

    Thats it.

    The triple equal to is simply a comparison operator. And the function call on one side of the triple equal to operator means the value returned from that function.

    Hence just treat it as any other comparison operator in javascript.

    And please correct me if I have misinterpreted your question.!

    All the best!