Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Khác biệt giữa void, eval và Function constructor trong JavaScript

1. Từ khóa void

Toán tử một ngôi đánh giá biểu thức nhưng trả về undefined. Dùng để ngăn hành vi mặc định (như link reload trang).

<a href="javascript:void(0)">Link không làm gì</a>
<a href="javascript:void(alert('Hello'))">Chạy alert, không load trang</a>

Cú pháp: void expression hoặc void(expression).

2. Hàm eval()

Thực thi chuỗi như mã JavaScript. Không khuyến khích do:

  • Hiệu năng kém (không tối ưu được).
  • Rủi ro bảo mật (XSS injection).
  • Scope phức tạp.
var a = 30, b = 12;
console.log(eval("a * b")); // 360
console.log(eval("5 + 10")); // 15

3. Function Constructor

Tạo function mới từ chuỗi tham số và body. Cũng không khuyến khích (tương tự eval).

var multiply = new Function('p', 'q', 'r', 'return p * q * r');
console.log(multiply(5, 2, 9)); // 90

Bảng so sánh

Đặc điểmvoideval()Function()
Mục đíchĐánh giá, trả undefinedThi hành code stringTạo function động
Trả vềundefinedKết quả biểu thứcFunction object
Bảo mậtAn toànRủi ro caoRủi ro cao
Hiệu năngTốtKémKém
Khuyến nghịDùng khi cầnTránhTránh