Vui lòng xem xét hai đoạn mã (các bản in đầu tiên "eval địa phương", các bản in thứ hai "eval toàn cầu"):eval địa phương phân biệt từ eval toàn cầu
(function f() {
var x;
try {
eval("x");
console.log('Local eval');
}
catch (e) {
console.log('Global eval');
}
}())
và
var globalEval = eval;
(function f() {
var x;
try {
globalEval("x");
console.log('Local eval');
}
catch (e) {
console.log('Global eval');
}
}())
Nó chỉ ra rằng mặc dù globalEval === eval
đánh giá là true
, globalEval
và eval
hoạt động khác nhau vì chúng có tên khác nhau. (Một eval chỉ có thể là cục bộ nếu nó được viết chính xác eval
.)
Làm thế nào tôi có thể phân biệt với hai evals? Có cách nào để trích xuất các nhãn biến để suy luận về hành vi không?
@MattiVirkkunen: Tôi đang cố gắng xây dựng một ví dụ về [this] (http://stackoverflow.com/questions/7223517/pure-function-given-strictly-equal-arguments-yielding-non-strictly-equal -các kết quả). Tôi thân thiết, nhưng chưa hoàn toàn ở đó. – Randomblue
Tại sao bạn không chỉ gắn bó với [câu hỏi trước đây của bạn] (http://stackoverflow.com/questions/9145385/accessing-local-eval-inside-function-scope)? –
@amnotiam: Đó là loại khác nhau, và tôi đã bối rối. Tôi ước tôi có thể xóa nó. – Randomblue