Some clarification is needed:
Scripts evaluated with `setInterval(String, 2)`, `setTimeout(String, 2)`, or `new Function(String)` only have access to their own local variables and global variables, not variables from the scope from which those functions were called. This contrasts with `eval()` in that `eval()` has access to the local scope in which you called `eval()`.