--- /dev/null
+define(['./isArray'], function (isArray) {
+
+ /**
+ * covert value into number if numeric
+ */
+ function toNumber(val){
+ // numberic values should come first because of -0
+ if (typeof val === 'number') return val;
+ // we want all falsy values (besides -0) to return zero to avoid
+ // headaches
+ if (!val) return 0;
+ if (typeof val === 'string') return parseFloat(val);
+ // arrays are edge cases. `Number([4]) === 4`
+ if (isArray(val)) return NaN;
+ return Number(val);
+ }
+
+ return toNumber;
+
+});