The specification for this function is given in 15.1.3.4 .
Modern versions (2018) of V8 implement it in C ++. See Src / uri.h :
// ES6 section 18.2.6.5 encodeURIComponenet (uriComponent) static MaybeHandle<String> EncodeUriComponent(Isolate* isolate, Handle<String> component) {
which calls Encode defined in uri.cc.
Older versions of V8 implemented it in JavaScript and distributed under the BSD license. See Line 359 from src / uri.js.
// ECMA-262 - 15.1.3.4 function URIEncodeComponent(component) { var unescapePredicate = function(cc) { if (isAlphaNumeric(cc)) return true; // ! if (cc == 33) return true; // '()* if (39 <= cc && cc <= 42) return true; // -. if (45 <= cc && cc <= 46) return true; // _ if (cc == 95) return true; // ~ if (cc == 126) return true; return false; }; var string = ToString(component); return Encode(string, unescapePredicate); }
It is not called encodeURIComponent there, but this code in the same file, esablishes display:
InstallFunctions(global, DONT_ENUM, $Array( "escape", URIEscape, "unescape", URIUnescape, "decodeURI", URIDecode, "decodeURIComponent", URIDecodeComponent, "encodeURI", URIEncode, "encodeURIComponent", URIEncodeComponent ));
Mike samuel
source share