Posts

Showing posts from August, 2016

ES proposal: Function.prototype.toString revision

The ECMAScript proposal “ Function.prototype.toString revision ” by Michael Ficarra is currently at stage 3. It brings two major improvements compared to ES2016 : Whenever possible – source code: If a function was created via ECMAScript source code, toString() must return that source code. In ES2016, whether to do so is left up to engines. Otherwise – standardized placeholder: In ES2016, if toString() could not (or would not) create syntactically valid ECMAScript code, it had to return a string for which eval() throws a SyntaxError . In other words, eval() must not be able to parse the string. This requirement was forward-incompatible – whatever string you come up with, you can never be completely sure that a future version of ECMAScript doesn’t make it syntactically valid. In contrast, the proposal standardizes a placeholder: a function whose body is { [native code] } . Details are explained in the next section. The algorithm The proposal distinguishes: Functions defined via ECMA