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ị ạ
Bài liên quan
Đố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ếua = b;
và ngược lại hoặca = 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));
em cảm ơn anh nhiều ạ