isArguments.js

import { argumentsTag, objectProtoHasOwnProperty, objectProtoPropertyIsEnumerable } from './internals/native';
import { supportedArgumentsType } from './internals/helpers';
import isObjectLike from './isObjectLike';
import getTag from './internals/getTag';
/**
 * 检查值是否为 `arguments` 对象。
 *
 * @alias module:Language.isArguments
 * @since 1.0.0
 * @param {*} value 要检查的值。
 * @returns {boolean} 如果值为 `arguments` 对象,返回 `true`,否则返回 `false`。
 * @example
 *
 * isArguments(function() { return arguments }()); // true
 *
 * isArguments([1, 2, 3]); // false
 *
 */
function isArguments(value) {
    if (supportedArgumentsType) {
        return getTag(value) === argumentsTag;
    }
    return isObjectLike(value) && objectProtoHasOwnProperty.call(value, 'callee') && !objectProtoPropertyIsEnumerable.call(value, 'callee');
}
export default isArguments;