• Re: Aha! null is an object that isn't an Object!

    From Tracker1@1:103/705 to Deuce on Thu Feb 4 06:03:09 2021
    On 1/27/2021 6:39 PM, Deuce wrote:
    https://gitlab.synchro.net/main/sbbs/-/commit/87dceb286ef8215ca6d2efa122e21d33f505b92b#note_1411

    Many truthy things can be non-objects, so testing for
    thruthiness isn't> useful. > The test is there specifically
    to find things that can be passed to Object.keys()> without
    an exception.

    The else case is an implied return... expanding to something
    like:

    ```
    if (typeof obj !== 'object')
    return
    if (obj === null)
    return
    ```

    would be needlessly verbose.

    I generally prefer a single return as a pattern except in cases
    where indentation gets too deep or when goto would be required.
    Hunting for returns when debugging is a PITA.

    Anything that is truthy (and some that aren't, like `false`) can be
    passed to Object.keys() .. so that's the only check that is needed.

    ```
    Object.keys(true)
    []
    Object.keys(1)
    []
    Object.keys(new Date())
    []
    Object.keys(false)
    []
    Object.keys([])
    []
    ```
    --
    Michael J. Ryan (tracker1)
    +o roughneckbbs.com
    ---
    ■ Synchronet ■ Roughneck BBS - roughneckbbs.com
    --- SBBSecho 3.12-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)