Giả sử tôi có một mảng liên kết Foo, với thanh khóa và giá trị xyz.Trong Javascript cái gì hiệu quả hơn, xóa một phần tử hoặc đặt nó thành không xác định rõ ràng
console.log(Foo['bar']);
>> xyz
delete Foo['bar'];
console.log Foo['bar'];
>> undefined
Foo['bar'] = 'xyz';
console.log(Foo['bar']);
>> xyz
Foo['bar'] = undefined;
console.log (Foo['bar']);
>> undefined
Câu hỏi của tôi là cái nào hiệu quả hơn, chúng có khác biệt gì không? Có một kịch bản khi tôi nên sử dụng một trong những khác?
Cảm ơn!
Kết quả:
Cảm ơn mọi người đã trợ giúp và cho tôi xem jsperf. Đặt nó thành undefined có vẻ là (tương đối) nhanh hơn đáng kể sau đó xóa, mặc dù tất cả các thông báo chỉ ra bên dưới cũng rất thú vị (trên thực tế, có lẽ tôi sẽ sử dụng xóa rất nhiều để tránh các lỗi trong tương lai).
nhảy qua http://www.jsperf.com và tìm hiểu. – jAndy
Đã được thử nghiệm ở đây? http://jsperf.com/delete-vs-undefined-vs-null/3 – JSuar
Đặt khóa thành 'undefined' không loại bỏ khóa trong đối tượng của bạn: http://i.imgur.com/LvPDC .png – Blender