Tôi gặp phải hành vi lạ khi sử dụng eval
trong JS.Chụp Javascript biến
var f = function() {
var x = 10;
return function() {
eval('console.log(x);');
window['eval']('console.log(x);');
}
};
f()();
OUTPUT:
10
undefined:1
console.log(x);
^
ReferenceError: x is not defined
Tại sao sử dụng eval
rõ ràng nắm bắt được x
nhưng global['eval']
không? Và mặc dù global['eval']
không chụp x
, tại sao nó không thể thấy sau eval
, đã bị bắt giữ x
?
câu hỏi tốt hơn là lý do tại sao bạn đang sử dụng eval? eval làm những điều kỳ diệu. tốt nhất là để nó một mình. –
Đôi khi để thử nghiệm từ xa, tôi cần tải nhanh và chạy mã cục bộ của mình. Không cho mã sản xuất :) –
http://stackoverflow.com/a/17281213/1005215 –