'use strict';

var isObject = require('./isObject-B6Osvvqp.js');
var isObjectLike = require('./isObjectLike-Dlpn-j-1.js');

/** `Object#toString` result references. */
var symbolTag = '[object Symbol]';

/**
 * Checks if `value` is classified as a `Symbol` primitive or object.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
 * @example
 *
 * _.isSymbol(Symbol.iterator);
 * // => true
 *
 * _.isSymbol('abc');
 * // => false
 */
function isSymbol(value) {
  return typeof value == 'symbol' ||
    (isObjectLike.isObjectLike(value) && isObject.baseGetTag(value) == symbolTag);
}

exports.isSymbol = isSymbol;
