Por favor, tenga en cuenta los dos fragmentos de código (las primeras impresiones "eval local", la segunda imprime "eval Global"):Distinguir eval local desde eval mundial
(function f() {
var x;
try {
eval("x");
console.log('Local eval');
}
catch (e) {
console.log('Global eval');
}
}())
y
var globalEval = eval;
(function f() {
var x;
try {
globalEval("x");
console.log('Local eval');
}
catch (e) {
console.log('Global eval');
}
}())
Se resulta que aunque globalEval === eval
evalúa a true
, globalEval
y eval
se comportan de manera diferente porque tienen diferentes nombres. (Una evaluación solo puede ser local si está escrita con precisión eval
.)
¿Cómo puedo distinguir dos evaluaciones? ¿Hay alguna manera de extraer etiquetas de variables para inferir el comportamiento?
@MattiVirkkunen: Estoy tratando de construir un ejemplo de [esto] (http://stackoverflow.com/questions/7223517/pure-function-given-strictly-equal-arguments-yielding-non-strictly-equal -resultados). Estoy cerca, pero no del todo todavía. – Randomblue
¿Por qué no te quedaste con [tu pregunta anterior] (http://stackoverflow.com/questions/9145385/accessing-local-eval-inside-function-scope)? –
@amnotiam: Es un poco diferente, y me confundí. Desearía poder borrarlo – Randomblue