I don't think I'd inflict ~~(1*"12.5") on someone for an insignificant gain when a parseInt() is obvious. (I also suspect that at least one of those implementations constant folded it.)
For example, what is the performance penalty of:
var arr = [1, 2, 3];
for(var i=0; i < arr.length; i++){ //stuff }
// versus
$.each( arr, function(i, val){ // stuff } );
Or @ caching: $("a").each( function(){
$(this).click(
$(this).find("img").hide();
);
});
// versus
$("a").each( function(){
var targetImage = $(this).find("img");
$(this).click(
$(targetImage).hide();
);
});In my job I was always shocked to see massive HTML strings appended or replaced in an objects innerHTML, and instead wrote lots of createElements and createTextNodes. Apparently, for performance's sake (and especially in loops) it is MUCH more efficient to use a string and replace methods to alter the content.
http://mir.aculo.us/ http://script.aculo.us/downloads/extremejs.pdf
Slideshare is terribly unresponsive at times, and the registration's capcha doesn't work properly.
"with", try/catch, etc. all introduce another level of scope, which means anything you reference that isn't in that scope directly takes more time to look up. Yeah, it's pretty retarded.
I realize that things like window.x can be added at runtime, but local scopes ought to be simple to rule out.... as long as there are no calls to eval() .....
eval(), which can introduce local bindings at runtime from arbitrary, runtime-constructed strings....
Ugh.
And since aliases to eval can also be created, in any scope, from other dynamically eval()'d code strings, you can't even be sure that any nonlocal symbol won't resolve to eval.
So the only way you can be sure that a level of scope can be skipped in the lookup chain is if there are no function calls made on any redefinable nonlocal symbols.
If there were a subset of javascript where eval was a keyword instead of an identifier, then this would be easier.