You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
949 B
31 lines
949 B
'use strict'; |
|
|
|
var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'; |
|
var toStr = Object.prototype.toString; |
|
|
|
var isStandardArguments = function isArguments(value) { |
|
if (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) { |
|
return false; |
|
} |
|
return toStr.call(value) === '[object Arguments]'; |
|
}; |
|
|
|
var isLegacyArguments = function isArguments(value) { |
|
if (isStandardArguments(value)) { |
|
return true; |
|
} |
|
return value !== null && |
|
typeof value === 'object' && |
|
typeof value.length === 'number' && |
|
value.length >= 0 && |
|
toStr.call(value) !== '[object Array]' && |
|
toStr.call(value.callee) === '[object Function]'; |
|
}; |
|
|
|
var supportsStandardArguments = (function () { |
|
return isStandardArguments(arguments); |
|
}()); |
|
|
|
isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests |
|
|
|
module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;
|
|
|