Thứ hai, 26/08/2019 | 00:00 GMT+7

Những lý do tại sao bạn không bao giờ nên sử dụng eval () trong JavaScript


Hàm eval () đã có từ lâu trong JavaScript! Bạn có thể không nhìn thấy nó thường xuyên nữa vì mọi người đều đồng ý rằng nó có hại khi sử dụng. Ta hãy cùng tìm hiểu sơ lược về nó và một số nguy hiểm liên quan đến việc sử dụng nó.

Từ khóa eval là từ viết tắt của "đánh giá". Về cơ bản, hàm này lấy một chuỗi có mã JavaScript và sẽ đánh giá nó cho bạn.

eval('2 + 3 + 1');
// 6

Bạn có thể đánh giá một biểu thức đơn giản… Hoặc một loạt mã JavaScript!

var foo = 2;

eval('var bar = 3;\
var baz = 1;\
\
function addStuff() {\
  return foo + bar + baz;\
}\
\
addStuff();\
');
// 6

Những lý do nên tránh sử dụng eval()

Trừ khi bạn đang thực hiện JavaScript cấp cao (xem bên dưới), rủi ro thường lớn hơn lợi ích của việc sử dụng eval() . Dưới đây là một số lý do để tránh sử dụng nó:

  • Mã độc : gọi eval có thể làm hỏng máy tính. Ví dụ: nếu bạn sử dụng eval phía server và một user tinh quái quyết định sử dụng vòng lặp vô hạn làm tên user của họ.
  • Rất chậm : ngôn ngữ JavaScript được thiết kế để sử dụng toàn bộ các loại JavaScript (số, hàm, đối tượng, v.v.)… Không chỉ là chuỗi! Việc sử dụng eval là các lệnh có độ lớn chậm hơn so với mã JavaScript bình thường.

Xét rằng eval() vẫn là một phần của tiêu chuẩn ECMAScript… Có cách sử dụng thích hợp nào cho nó không?

Sử dụng hợp lệ cho eval()

Có một group nhỏ phát triển JavaScript yêu cầu sử dụng eval . Chúng bao gồm: phát triển thư viện mẫu, trình thông dịch, dòng lệnh và hệ thống module . Hầu hết các kiểu phát triển phần mềm này là các công cụ xây dựng và lập trình meta.


Nếu bạn không chắc có sử dụng eval , hãy thử tìm kiếm nhanh trên StackOverflow . Hầu như luôn có một cách tiếp cận tốt hơn.


Tags:

Các tin liên quan

Toàn cầu mới Thuộc tính JavaScript này
2019-08-08
Vẽ hình với API Canvas JavaScript
2019-08-05
clientWidth và clientHeight trong JavaScript
2019-07-24
Các phương pháp hay nhất để gỡ lỗi mã JavaScript trong trình duyệt
2019-07-05
Tối ưu hóa Tuyên bố chuyển đổi trong JavaScript
2019-06-18
Làm việc với Singletons trong JavaScript
2019-04-19
Cách sử dụng Axios với JavaScript
2019-04-05
Giới thiệu về Lặp lại và Trình lặp trong JavaScript
2019-03-13
D3.js: Hiểu các lựa chọn và so sánh với Vanilla JavaScript
2019-03-04
Xem xét Phạm vi, Ngữ cảnh, Tham chiếu Đối tượng và Thuyết minh trong JavaScript
2019-02-25