Eval Trong Javascript - Blog
Có thể bạn quan tâm
- Home
- Technical
- Life
- Login
Created: 2018/04/25 - Last modified: 2018/04/25 eval trong javascript Ta nên tránh dùng eval vì một số lý do sau:
- Dễ bị tấn công injection.
- Không debug được code trong eval.
- Hiệu năng khi chạy code trong eval.
Có 2 cách gọi eval là gọi trực tiếp(Direct call) và gọi gián tiếp(Indirect call)
- Direct call là gọi trực tiếp bằng cách gọi eval(...your code...)
- Indirect call là gọi gián tiếp thông qua một biến trung gian(xem VD phía dưới)
Xét ví dụ sau:
x = 10; (function foo() { var x = 20; (function bar(){ var x = 30; eval("console.log(1, x)") var indirectEval = eval; indirectEval("console.log(2, x)"); ("indirect", eval)("console.log(3, x);"); var window = 100; eval("console.log(4, window);"); indirectEval("console.log(5, window);"); })(); })(); this.eval("var y = 20;"); console.log(6, y);Câu lệnh eval ở dòng 7 và 15 là direct call, còn câu lệnh ở dòng 10, 12, 16, 21 là indirect call
Indirect call sẽ luôn truy xuất tới biến ở global (không phải là biến ở scope hiện tại x = 30 hay scope cha x = 20)
Direct call sẽ truy xuất tới biến theo lexical scope như gọi hàm thông thường (từ scope hiện tại lên dần)
Đoạn code trên sẽ cho ra kết quả:
1 302 103 104 1005 Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}6 20Link tham khảo:
http://dmitrysoshnikov.com/ecmascript/es5-chapter-2-strict-mode/#indirect-eval-call
Share Tweet Load CommentsTừ khóa » Hàm Eval Trong Js
-
Phương Thức Eval Trong Javascript - Freetuts
-
Hàm Eval Trong JavaScript
-
JavaScript Eval() Method - W3Schools
-
Giới Thiệu Hàm Eval Trong Javascript
-
Học Javascript Part 3 - Viblo
-
JavaScript: Eval() | V1Study
-
Hàm Eval() Trong Javascript - Javascript Function
-
Eval() - JavaScript - MDN Web Docs - Mozilla
-
Những Lý Do Tại Sao Bạn Không Bao Giờ Nên Sử Dụng Eval () Trong ...
-
JavaScript Căn Bản – Bài 21: Hàm Eval | Thủ Thuật Tin Học
-
Tại Sao Sử Dụng Hàm Eval JavaScript Là Một ý Tưởng Tồi? - HelpEx
-
Triển Khai Một Dòng Lệnh Với Eval Trong JavaScript
-
Hàm Eval Trong Splunk Là Gì?