4 ms·
`Function.prototype.toString()` is the basis for an alternate, ES5-era multiline string syntax: var str = (function(){/* STRING GOES
by amptorn 9y ago
`Function.prototype.toString()` is the basis for an alternate, ES5-era multiline string syntax:
var str = (function(){/*
STRING
GOES
HERE
*/}).toString().slice(14, -3);
- Yoric 9y agoThat's... an interesting use. I'm pretty sure it violates the actual specifications of JavaScript, breaks in presence of a minifier/uglifier and slows down your script, but it's a cool hack :)
- TheAceOfHearts 9y agoPrior to ES2015, the spec's definition of Function.prototype.toString() was pretty vague. The behavior was implementation-dependent, although I don't know the differences per browsers, since I've never used this feature seriously. Here's the text from ES5.1 [0]: > An implementation-dependent representation of the function is returned. This representation has the syntax of a FunctionDeclaration. Note in particular that the use and placement of white space, line terminators, and semicolons within the representation String is implementation-dependent. [0] http://www.ecma-international.org/ecma-262/5.1/#sec-15.3.4.2 http://www.ecma-international.org/ecma-262/5.1/#sec-15.3.4.2