Today I Learned - Rocky Kev

TIL Rest Parameters

POSTED ON:

TAGS:

You don't know how many params the function may use.

function add(...theArgs) {

    // return param1 + param2;
    let total = 0;

    for (let arg of theArgs) {
        total = total + parseInt(arg);
    }
    //foreach version
    theArgs.forEach(argument => {
        total += argument;
    })

    return total;
}

I originally used a for..in instead of a for..of.

The difference:

Another way would be to use a foreach loop.


TEST SUITE (using Jasmine):

describe('add()', () => {
    it('adds two numbers', () => {
        // arrange
        const num1 = 1;
        const num2 = 2;

        // act
        const result = add(num1, num2);

        // log
        console.log("result: ", result);

        // assert
        expect(result).toBe(3);
    });

    //remove x to add it as the testing suite
    xit('adds any ammount of numbers', () => {
        // arrange
        const num1 = 1;
        const num2 = 2;
        const num3 = 3

        // act
        const result = add(num1, num2, num3);

        // log
        console.log("result: ", result);

        // assert
        expect(result).toBe(6);
    });
});

rest
MDN Web Docs


Related TILs

Tagged:

TIL what is npm Script

Despite their high usage they are not particularly well optimized and add about 400ms of overhead. In this article we were able to bring that down to ~22ms.

TIL fancy methods to transform Javascript Objects

You can use Object.entries(), Object.keys(), Object.fromEntries()...

TIL how to hide your JS code

ONE THING TO NOTE: Encrypting a script is stronger than obfuscation, both methods are still not adequate to protect secret content. Honestly, I don't think it's worth it on a production site, and instead just go with pure server-side if you want security. But it's fascinating.