01/10/2018, 17:22

Hỏi về các phép so sánh trong JS

anh chị cho em hỏi với ạ : các phép so sánh trong js
câu 1 :

var a = [1, 2];
var b = [1, 2];
console.log(a === b);

em chạy chương trình thì là false nhưng em k hiểu vì sao

câu 2 :

var a = {
  foo: 'bar'
};
var b = {
  foo: 'bar'
};
console.log(a === b);

câu 3:

var a = '1000';
var b = '200';
console.log(a > b);

anh chị em có thể thông cái não này giúp em với không ạ . em chạy chương trình test thử thì kết quả đều là false nhưng em không thể giải thích được lý do . em đã search các kiểu k tìm dc nguyên nhân.
cám ơn anh chị ạ

Trần Hoàn viết 19:28 ngày 01/10/2018

Đối với 2 object, việc so sánh === cho kết quả true nếu 2 object đó là 1. Mảng là object.
Khi bạn gán a = [1, 2]; b = [1, 2]; là bạn đang gán a và b đến 2 đối tượng khác nhau (được đặt ở các vùng nhớ khác nhau trong bộ nhớ, mặc dù hai đối tượng này có cùng giá trị).

Phép === xảy ra nếu a = b; và ngược lại hoặc a = c; b = c;

Tương tự với a = {foo:"bar"}; b = {foo:"bar"};

Với câu 3, vì bạn so sánh chuỗi “1000” và “200”, nên kết quả sẽ là “1000” < “200”, chứ không phải so sánh 2 số. Nếu bạn muốn so sánh 2 số phải convert các chuỗi trên thành số: console.log(parseInt(a) > parseInt(b));

Đức Cá Rô viết 19:29 ngày 01/10/2018

em cảm ơn anh nhiều ạ

Bài liên quan
0