-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
identical.js
56 lines (53 loc) · 1.53 KB
/
identical.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import _objectIs from './internal/_objectIs.js';
/**
* Returns true if its arguments are identical, false otherwise. Values are
* identical if they reference the same memory. `NaN` is identical to `NaN`;
* `0` and `-0` are not identical.
*
* Note this is merely a curried version of ES6 `Object.is`.
*
* `identical` does not support the `__` placeholder.
*
* @func
* @memberOf R
* @since v0.15.0
* @category Relation
* @sig a -> a -> Boolean
* @param {*} a
* @param {*} b
* @return {Boolean}
* @example
*
* const o = {};
* R.identical(o, o); //=> true
* R.identical(1, 1); //=> true
* R.identical(1, '1'); //=> false
* R.identical([], []); //=> false
* R.identical(0, -0); //=> false
* R.identical(NaN, NaN); //=> true
*/
var identical = function(a, b) {
switch (arguments.length) {
case 0:
return identical;
case 1:
return (function() {
return function unaryIdentical(_b) {
switch (arguments.length) {
case 0:
return unaryIdentical;
default:
return _objectIs(a, _b);
}
};
}());
default:
return _objectIs(a, b);
}
};
// In order to support Cross-origin Window objects as arguments to identical,
// it cannot be implemented as _curry2(_objectIs).
// The reason is that _curry2 checks if a function argument is the placeholder __
// by accessing a paritcular property. However, across URL origins access
// to most properties of Window is forbidden.
export default identical;