-
Notifications
You must be signed in to change notification settings - Fork 1.2k
toString and valueOf
Michael Zhou edited this page Feb 12, 2016
·
1 revision
To facilitate better optimization in the common case the Closure Compiler assumes toString
and valueOf
implementation are effectively side-effect free.
In EcmaScript, toString
and valueOf
are implicitly called when type conversions are necessary, for example '' + x
is equivalent to '' + x.valueOf()
or '' + x.toString()
if valueOf
is not defined. A valueOf
or toString
with side-effects can be called in surprising places. A toString
implementation such as Foo.prototype.toString = function() {alert("hi")}
is a useful learning exercise but allowing for such behavior prohibit many basic optimizations, such as:
'a' + 'b' + 'c' ==> 'abc'