Code Monk(ey): Kiểm tra Array trong JS
Javascript
276
code
39
codemonkey
2
White

Huy Trần viết ngày 24/05/2017

Chuyên mục Code Monk(ey) bàn về những lỗi tai hại thường gặp khi code. Những lỗi này thoạt nhìn có vẻ rất hiển nhiên và vặt vãnh.


Khi cần kiểm tra một Array có phải là một Array hay không trong JS, một số người sẽ viết đoạn code như thế này:

// Giả sử `kips` là biến cần kiểm tra
if (kips && kips.length) {
  ...
}

Bạn có thể dễ dàng tìm ra đoạn code như thế này ở hầu hết mọi project JavaScript nào. Nếu tìm không ra thì bạn quả thực rất may mắn.

Đoạn code trên là từ một "senior JS engineer" đến từ một công ty gia công mà mình có vinh hạnh được làm việc cùng.

Vì sao lại viết như vậy? Vì nếu một biến là Array thì nó sẽ không phải null hoặc không undefined, và nó có thuộc tính length? Nghe cũng có vẻ hợp lý?


Nếu dùng để kiểm tra tính hợp lệ của một Array thì đoạn code trên là hoàn toàn sai. Đây là sai lầm lớn nhất và thường gặp nhất của các bạn chưa nắm vững JavaScript. Tại sao?

  • Thứ nhất: Giả sử biến kips thực sự là một Array, thì đoạn code trên vẫn sai. Nếu kips = [], tức là thuộc tính length sẽ bằng 0, điều kiện kiểm tra ở trên vẫn sẽ trả về false.
  • Thứ hai: Tai hại hơn, nếu kips không phải là một Array mà là một String, ví dụ kips = "Hello";, thì những điều kiện kiểm tra ở trên vẫn hoàn toàn đúng. Một string vẫn luôn có length.

Vậy thì nên dùng gì?

Đơn giản, chỉ cần dùng Array.isArray().

Các bạn có thể đọc thêm về hàm này tại MDN.

Array.isArray([1, 2, 3]);  // true
Array.isArray({foo: 123}); // false
Array.isArray('foobar');   // false
Array.isArray(undefined);  // false

Hàm này đảm bảo kiểm tra chính xác một Array có là Array hay không, và không bị nhập nhằng bởi các tính chất tương đồng với kiểu dữ liệu khác (như String trong ví dụ trên).


Có thể bạn sẽ nói chuyện này nhỏ như con thỏ. Nhưng trên thực tế thì con thỏ nó ko nhỏ chút nào đâu.

Be a code monk, don't be a code monkey.


Bài đăng lại từ blog của mình.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Huy Trần

116 bài viết.
1801 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
170 46
Tại sao phải viết blog kĩ thuật? Có rất nhiều bài viết trên mạng nói về vấn đề tại sao một lập trình viên nên thường xuyên viết các bài blog kĩ thu...
Huy Trần viết hơn 3 năm trước
170 46
White
151 39
(Ảnh) Tiếp tục sêri (Link) lần này, chúng ta sẽ cùng tìm hiểu và mô phỏng lại một chức năng mà mọi người đang bắt đầu sử dụng hằng ngày, đó là chứ...
Huy Trần viết hơn 2 năm trước
151 39
White
109 17
Phần 1: Tự truyện Tui và Toán đã từng là hai kẻ thù không đội trời chung trong suốt hơn mười lăm năm ròng rã. Ngay từ ánh nhìn đầu tiên đã ghét nh...
Huy Trần viết hơn 2 năm trước
109 17
Bài viết liên quan
White
54 23
Luận về comment code (Phong cách kiếm hiệp) Comment code luôn là vấn đề gây tranh cãi sứt đầu mẻ trán trong giới võ lâm. Xưa kia, thuở còn mài đít...
Huy Hoàng Phạm viết 3 năm trước
54 23
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
116 bài viết.
1801 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!