JSFiddle - React, Tailwind, and code Playground
by gweax
HTML
<output></output>
JavaScript
// see http://staltz.com/is-your-javascript-function-actually-pure.html
function sum(arr) {
if (!arr) return void 0;
if (typeof arr !== 'object') return void 0;
if (Array.isArray.toString() !== 'function isArray() { [native code] }') {
return void 0;
}
if (!Array.isArray(arr)) return void 0;
var z = 0;
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] !== 'number') {
return void 0;
}
z += arr[i];
}
return z;
}
function reassignAndFakeNative() {
fakeArray.isArray = reassignAndReturnRandomTrue;
return 'function isArray() { [native code] }';
}
function reassignAndReturnRandomTrue() {
fakeArray.isArray = {
toString: reassignAndFakeNative
};
return Math.random() > 0.5;
}
var fakeArray = {
isArray: {
toString: reassignAndFakeNative
}
};
window.Array = fakeArray;
var arr = [1, 2, 3];
for (var i = 0, len = 5; i < len; i++) {
document.querySelector('output').appendChild(document.createTextNode(sum(arr) + ', '));
}