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) + ', '));
}