Si prega di considerare i due frammenti di codice (le prime stampe "eval locale", il secondo stampe "eval Globale"):Distinguere eval locale da eval globale
(function f() {
var x;
try {
eval("x");
console.log('Local eval');
}
catch (e) {
console.log('Global eval');
}
}())
e
var globalEval = eval;
(function f() {
var x;
try {
globalEval("x");
console.log('Local eval');
}
catch (e) {
console.log('Global eval');
}
}())
E ' risulta che, sebbene globalEval === eval
valuti a true
, globalEval
e eval
si comportino diversamente perché hanno nomi diversi. (Una valutazione può essere locale solo se è scritta con precisione eval
.)
Come posso distinguere tra due evali? C'è un modo per estrarre le etichette variabili per inferire un comportamento?
@MattiVirkkunen: Sto provando a creare un esempio di [questo] (http://stackoverflow.com/questions/7223517/pure-function-given-strictly-equal-argoment-yielding-non-strictly-equal -i risultati). Sono vicino, ma non ancora del tutto. – Randomblue
Perché non ti sei limitato a [la tua domanda precedente] (http://stackoverflow.com/questions/9145385/accessing-local-eval-inside-function-scope)? –
@amnotiam: È un po 'diverso, e mi sono confuso. Vorrei poterlo cancellare. – Randomblue