[JS] Làm thế nào kiểm tra một biến là kiểu nguyên thủy (primitive) trong JS

Trong bài viết hôm nay mình sẽ làm rõ một vấn đề đó là làm thế nào để kiểm tra một biến có phải kiểu nguyên thủy (primitive) hay không? Và viết một đoạn code nho nhỏ để làm công việc này.

Đầu tiên các bạn cần hiểu rõ kiểu primitive là gì. À ngược lại với primitive là non-primitive, kiểu không nguyên thủy :D, dịch ra chuối chuối thế đấy.

Kiểu primitive trong JS

Hiểu đơn giản kiểu primitive là kiểu dữ liệu được cung cấp sẵn trong ngôn ngữ lập trình, cụ thể ở đây là JS. Trong JS có 7 kiểu dữ liệu primitive như sau: boolean, string, number, bigint, null, symbolundefined. Kiểu non-primitive sẽ là object, arrayfunction (chúng đều dây mơ rễ má với nhau cụ thể là đều thuộc kiểu chung Objects).

Tất cả kiểu primitive đều chứa giá trị trong khi đó non-primitive đều chứa địa chỉ liên kết. Nghĩa là kiểu primitive là tham trị, non-primitive là tham chiếu.

Kiểm tra biến là kiểu primitive.

Giả sử chúng ta khai báo một biến: mValue.

1
var mValue;

Sau một loạt xử lý phức tạp em này đã thay lòng đổi dạ biết bao lần. Về cuối chương trình chúng ta cần xác định em ấy đã biến thái ra sao thì phải làm thế nào?

À nói lảm nhảm ý mình là làm thế nào xác định biến mValue là kiểu primitive hay non-primitive. Hên là chúng ta đều biết non-primitive có dây mơ rễ má với nhau qua thèn Objects nên chúng ta sẽ nhờ thèn cu này.

1
2
3
function isPrimitive(variableName) {
return Object(variableName) !== variableName;
}

Chúng ta sẽ truyền biến mValue vào contructor của Object, khi contructor này nhận giá trị đầu vào là kiểu non-primitive thì nó sẽ return mValue về luôn. Ngược lại nếu mValue là kiểu primitive, contructor của Object sẽ tạo ra một Object mới để chứa giá trị của mValue.

Khi đó với dùng so sánh tripple thì ta sẽ biết nó có phải là primitive hay không.

So sánh tripple như thế nào các bạn có thể tham khảo bài viết: Vì sao nên dùng tripple equals `===` khi so sánh trong JS

Sơ sơ vậy thôi, à sẵn tiện đang nói Object mình sẽ bonus thêm một điểm nữa.

Tạo một object mới không có prototype (pure object)

Khi bạn khai báo một object thì khi in ra console các bạn sẽ thấy nó có một cái gọi là __proto__;

1
2
3
let objVar = {};

console.log(objVar);
image

Vậy giả dụ tui muốn tạo một object mà không có cái chi trong đó luôn thì sao (cụ thể không có __proto__), tạo pure object (object thuần khiết) ấy.
Đơn giản hãy xài Object.create() nếu bạn truyền vào null hoặc một giá trị bằng null hoặc undefined thì nó sẽ tạo mới và trả về một object rỗng (pure object đó).

1
2
3
let objVar = Object.create(null);

console.log(objVar);
image

Thấy gê chưa :)))

Okay vậy xong nhé. Hẹn gặp lại

Tham khảo

 Comments
Comment plugin failed to load
Loading comment plugin