## Item 16: Avoid Creating Local Variables with eval
`eval` will pollute the caller's scope
## Item 17: Prefer Indirect eval to Direct eval
The other kind of call to eval is considered “indirect,” and evaluates its argument in global scope.引自 3. Working with Functions
eval 内的 scope 会变成 global, 这样 local scope 的东西无法访问
A concise way to write an indirect call to eval is to use the expression sequencing operator (,) with an apparently pointless number literal:引自 3. Working with Functions
(0,eval)(src);
## Item 24: Use a Variable to Save a Reference to arguments
a new arguments variable is implicitly bound in the body of each function.a The arguments object we are interested in is the one associated with the values function, but the iterator’s next method contains its own arguments variable. So when we return arguments[i++], we are accessing an argument of it.next instead of one of the arguments of values.引自 3. Working with Functions
## Item 28: Avoid Relying on the toString Method of Functions
JavaScript engines are not required to produce accurate reflections of function source code via `toString`引自 3. Working with Functions
Try: `func.bind({}).toString()`
Different engines may produce different results from `toString`引自 3. Working with Functions
## Item 29: Avoid Nonstandard Stack Inspection Properties
Do not use `arguments`, `function.caller` as call stack