has(()=>{return a.b.c}) === false

Return true if nested object is valid or false if nested contains null or undefined

by Yury

HTML

<p>
Return true if nested object is valid or false if nested contains null or undefined: <br/>
has(()=>{return a.b.c})
</p>

CSS

* {
  background: #1e1e1e;
  font-family: sans-serif;
  color: #c0c0c0;
  text-align: center;
}

JavaScript

// has(()=>{return a.b.c}) === false

/* eslint-disable import/prefer-default-export, no-unsafe-finally */

/**
 * Return true if nested object is valid or false if nested contains null or undefined
 *
 * @param fn - function.
 *
 * const a = {
 *   b: {
 *     c: 'tt'
 *   }
 * }
 *
 * has(()=>{return a.b.c}) === true
 *
 *
 *
 *
 * const a = {
 *   b: {
 *   }
 * }
 *
 * has(()=>{return a.b.c}) === false
 */

export const has = fn => {
  if (typeof fn !== 'function') {
    console.error(`function "has" invalid parameter type fn ("${typeof fn}") expected "function"`)
    return false
  }
  let value
  try {
    value = fn()
  } catch (e) {
    value = undefined
  } finally {
    return value !== undefined
  }
}