Yeah, you could test this in the first example by replacing the string 'interval' with something like
"alert(str.length)", and then redefining
console.log=eval.
e: nm, I missed pcwalton's point -- when you call eval indirectly it isn't accessing the same scope. So redefining console.log couldn't access local variables like str. (I don't think?)