So different JavaScript
07 May 201715 years together and still married… and still fighting 😂
2000: Good old C-like style
function url_encode (data) {
var str = "";
var flag = false;
for (var k in data) {
str = str + escape(k);
str = str + "=";
str = str + escape(data[k]);
str = str + "&";
flag = true;
}
if (flag) {
str = str.substr(0, str.length-1);
}
return str;
}
2005: prototype.js and Ext.js are hot
UrlEncode.stringify = function (data) {
var
encode = window.encodeURIComponent,
pairs = [],
v, k;
for (k in data) {
v = data[k];
k = encode(k);
pairs.push(k + '=' + encode(v));
}
return pairs.join('&');
}
2010: JavaWhat? jQuery!
$.param()
2015: FaceBabel Reacts to Elm!
// let
const encodePairs = map(map(encodeURIComponent))
const packPairs = map(join('='))
const packFragments = join('&')
// in
export const stringify = compose(packFragments, packPairs, encodePairs, toPairs)
2020: Elm? WebAssembly?
Tell us, future me!