lib/stringify.js
function emptyRepresentation(value, type) {
  type = type || getType(value);

  switch (type) {
    case 'function':
      return '[Function]';
    case 'object':
      return '{}';
    case 'array':
      return '[]';
    default:
      return value.toString();
  }
}
function emptyRepresentation(value, type) {
  type = type || getType(value);

  switch (type) {
    case 'function':
      return '[Function]';
    case 'object':
      return '{}';
    case 'array':
      return '[]';
    default:
      return value.toString();
  }
}
If a value could have properties, and has none, this function is called,
which returns a string representation of the empty value.

Functions w/ no properties return `'[Function]'`
Arrays w/ length === 0 return `'[]'`
Objects w/ no properties return `'{}'`
All else: return result of `value.toString()`