Hướng dẫn not equal javascript - javascript không bằng

Trong hướng dẫn này, bạn sẽ tìm hiểu về JavaScript không bằng toán tử và các toán tử so sánh khác cùng với các ví dụ.

Show

Mục lục - JavaScript không bằng:

  • Các toán tử so sánh trong JS là gì?
  • Những gì là! = Hồi trong JS?
  • Các nhà khai thác so sánh khác
  • Bớt tư tưởng

Các toán tử so sánh trong JS là gì?

Những gì là! = Hồi trong JS?

Các nhà khai thác so sánh khác

Những gì là! = Hồi trong JS?

Các nhà khai thác so sánh khác

Bớt tư tưởng

Các toán tử so sánh trong các ngôn ngữ lập trình được sử dụng để so sánh hai giá trị. Các toán tử này trả về một giá trị boolean (Đúng hoặc sai) dựa trên điều kiện. Do đó, các nhà khai thác này được sử dụng trong việc ra quyết định hoặc làm tuyên bố có điều kiện cho các vòng lặp.

Với cách sử dụng rộng lớn của nó, mọi nhà phát triển nên hiểu chức năng của từng nhà điều hành. Bài viết này là một điểm khởi đầu tốt cho cùng một điều, tuy nhiên, chúng tôi nhấn mạnh nhiều hơn về các toán tử JavaScript không bằng (! = &! ==).

console.log(5 != 10);
// expected output: true

console.log(10 != 10);
// expected output: false

console.log(10 != '10');
// expected output: false

console.log(10 !== '10');
// expected output: true

JavaScript không bằng hoặc toán tử bất bình đẳng (! =) Kiểm tra xem hai giá trị không bằng và trả về giá trị boolean. Nhà điều hành này cố gắng so sánh các giá trị bất kể chúng có thuộc các loại khác nhau hay không.

Tuy nhiên, nhà điều hành bất bình đẳng hoặc bất bình đẳng nghiêm ngặt không cố gắng làm như vậy và trả về sai nếu các giá trị không đồng đều hoặc thuộc các loại khác nhau.

Cả hai nhà khai thác này giải quyết các mục đích khác nhau và do đó tôi khuyên bạn nên thực hành chúng để tạo điều kiện cho sự hiểu biết thêm.

Mã và giải thích:

  • Trong trường hợp đầu tiên, nó trở lại đúng vì các giá trị là khác nhau. Trong các trường hợp thứ hai và thứ ba, nó đã trả lại một nguyên nhân giả, các giá trị là như nhau. Xin lưu ý rằng trong trường hợp sau mặc dù chúng tôi đã vượt qua 10 dưới dạng chuỗi, toán tử có thể so sánh cả hai giá trị.
  • Trong trường hợp cuối cùng, chúng tôi đã sử dụng toán tử bất bình đẳng nghiêm ngặt và nó đã trả về đúng vì các giá trị thuộc các loại khác nhau.
  • Các nhà khai thác so sánh khác:
  • Ngoài JavaScript không bằng nhau và các toán tử bất bình đẳng nghiêm ngặt, chúng tôi còn có một vài nhà khai thác khác giải quyết các trường hợp sử dụng khác nhau. Chúng tôi đã thêm một bản tóm tắt về họ dưới đây.
  • Bằng (==) - kiểm tra xem hai giá trị có bằng không
  • Nghiêm ngặt bằng (===) - kiểm tra là hai giá trị bằng nhau và loại tương tự

Với cách sử dụng rộng lớn của nó, mọi nhà phát triển nên hiểu chức năng của từng nhà điều hành. Bài viết này là một điểm khởi đầu tốt cho cùng một điều, tuy nhiên, chúng tôi nhấn mạnh nhiều hơn về các toán tử JavaScript không bằng (! = &! ==).

console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true

JavaScript không bằng hoặc toán tử bất bình đẳng (! =) Kiểm tra xem hai giá trị không bằng và trả về giá trị boolean. Nhà điều hành này cố gắng so sánh các giá trị bất kể chúng có thuộc các loại khác nhau hay không.

Tuy nhiên, nhà điều hành bất bình đẳng hoặc bất bình đẳng nghiêm ngặt không cố gắng làm như vậy và trả về sai nếu các giá trị không đồng đều hoặc thuộc các loại khác nhau.

Cả hai nhà khai thác này giải quyết các mục đích khác nhau và do đó tôi khuyên bạn nên thực hành chúng để tạo điều kiện cho sự hiểu biết thêm.

Vấn đề

Javascript là ngôn ngữ lập trình không quy định chặt chẽ về kiểu dữ liệu của biến (Weakly Typed Language). Do vậy, tùy vào trường hợp được sử dụng mà giá trị biến trong Javascript sẽ được hiểu theo kiểu dữ liệu thích hợp.

Ví dụ:

var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')

So sánh với toán tử logic

// all true
false == 0;
0 == '';
null == undefined;
[] == false;
!![0] == true;

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;
3truthyfalsy.

var a = 1; //kiểu int

console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
//kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D

Ngoại lệ duy nhất là

var a = 1; //kiểu int

console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
//kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
3 vẫn không tương đương với bất kỳ giá trị nào, kể cả chính nó.

Vài tips lời khuyên khi sử dụng

Tránh so sánh trực tiếp giá trị

Khi cần so sánh một giá trị với boolean, ít khi ta phải so sánh trực tiếp chúng với

console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
0 hay
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
2 mà chỉ cần xét đến giá trị đó là truthy hay falsy.

Sử dụng

// all true
false == 0;
0 == '';
null == undefined;
[] == false;
!![0] == true;

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;
3 thay cho
var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
4

Khi cần so sánh hai giá trị có giống nhau hay không ta nên dùng toán tử so sánh

// all true
false == 0;
0 == '';
null == undefined;
[] == false;
!![0] == true;

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;
3 (hoặc
// instead of
if (x == false) // ...
// runs if x is false, 0, '', or []

// use
if (!x) // ...
// runs if x is false, 0, '', NaN, null or undefined
1) thay cho
var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
4 (hoặc
// instead of
if (x == false) // ...
// runs if x is false, 0, '', or []

// use
if (!x) // ...
// runs if x is false, 0, '', NaN, null or undefined
3) để tránh gặp vấn đề chuyển đổi kiểu giá trị.SÁU giá trị được coi là
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
3, còn lại tất cả những giá trị khác không phải là những giá trị này đều được xem là
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
4.

Chuyển đổi sang giá trị boolean khi cần thiết

  • Bất cứ giá trị nào cũng có thể chuyển đổi sang giá trị boolean bằng cách sử dụng toán tử
    // instead of
    if (x == false) // ...
    // runs if x is false, 0, '', or []
    
    // use
    if (!x) // ...
    // runs if x is false, 0, '', NaN, null or undefined
    
    6. Sử dụng toán tử này cho
    var a = 1; //kiểu int
    var b = '2'; //kiểu string
    
    console.log(a > b);
    //kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`
    
    console.log(b + a);
    // kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
    
    6 (
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2,
    var a = 1; //kiểu int
    var b = '2'; //kiểu string
    
    console.log(a > b);
    //kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`
    
    console.log(b + a);
    // kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
    
    9,
    // instead of
    if (x == y) // ...
    // runs if x and y are both truthy or both falsy
    // e.g. x = null and y = undefined
    
    // use
    if (x === y) // ...
    // runs if x and y are identical...
    // except when both are NaN
    
    0,
    var a = 1; //kiểu int
    var b = '2'; //kiểu string
    
    console.log(a > b);
    //kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`
    
    console.log(b + a);
    // kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
    
    0,
    var a = 1; //kiểu int
    
    console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
    //kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
    
    2,
    var a = 1; //kiểu int
    
    console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
    //kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
    
    3) sẽ nhận được giá trị là
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2, và được sử dụng khi muốn kiểm tra 2 giá trị cùng là
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    4 hay
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    3 hay không?
  • // instead of
    if (x === y) // ...
    // runs if x and y are identical...
    // except when both are NaN
    
    // use
    if (!!x === !!y) // ...
    // runs if x and y are identical...
    // including when either or both are NaN
    
  • Tài liệu tham khảo
  • Vấn đề

Javascript là ngôn ngữ lập trình không quy định chặt chẽ về kiểu dữ liệu của biến (Weakly Typed Language). Do vậy, tùy vào trường hợp được sử dụng mà giá trị biến trong Javascript sẽ được hiểu theo kiểu dữ liệu thích hợp.

Ở 1 ví dụ khác, khi chương trình mong muốn giá trị của một biến được trả về dưới kiểu boolean , trong khi biến đó được định nghĩa với 1 kiểu khác thì giá trị của biến sẽ được hiểu theo 2 nhóm giá trị truthy và falsy.Vậy thì truthy và falsy value là gì :-?
Định nghĩa"Bạn hãy cho biết truthy và falsy value trong Javascript là gì?"
Có lẽ đây sẽ là 1 trong bộ câu hỏi được hỏi phổ biến trong các buổi phỏng vấn về Javascipt. Và ngay bản thân mình và 1 số các bạn khác sẽ lúng tung trước câu hỏi này vì bạn không nhớ được chính xác những giá trị đó hoặc là không biết về nó. Vì thế hôm nay mình đã quyết tâm củng cố thêm kiến thức cho chính mình và chia sẻ cho mọi người về vấn đề này, hy vọng sẽ giúp ích được các bạn phần nào. (bow)Hiểu đơn giản thì ... Truthy value là những giá trị trong Javascript mà khi ép kiểu về Boolean thì sẽ cho ra giá trị là
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
0. Ngược lại,
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
1 là những giá trị mà khi ép kiểu về Boolean thì cho ra giá trị là
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
2.
Trong Javascript có SÁU giá trị được coi là
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
3, còn lại tất cả những giá trị khác không phải là những giá trị này đều được xem là
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
4.
Cách nhớ kiểu dữ liệu thuộc truthy và falsy value
Kiểu
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
5 có giá trị
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
0 và
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
2, vậy giá trị false chắc chắn là falsy value.
Kiểu
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
5 có giá trị
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
0 và
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
2, vậy giá trị false chắc chắn là falsy value.
Kiểu
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
8 chứa tất cả những con số. Nhưng có 2 giá trị đặc biệt là số không (0) và Not a Number (NaN), và nó đều là falsy value.
Kiểu
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
8 chứa tất cả những con số. Nhưng có 2 giá trị đặc biệt là số không (0) và Not a Number (NaN), và nó đều là falsy value.

Kiểu dữ liệu chuỗi

console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
9 , với chuỗi rỗng (chuỗi không chứa bất kỳ 1 ký tự nào) là falsy value.

Và còn lại 2 giá trị

var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
0 và
var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
1 là falsy value.

  • Tóm cái váy lại thì như này
  • Kiểu dữ liệu
  • Falsy value
  • Boolean

false

Hướng dẫn not equal javascript - javascript không bằng
Hướng dẫn not equal javascript - javascript không bằng
Hướng dẫn not equal javascript - javascript không bằng

Number

0 hoặc NaN

Hướng dẫn not equal javascript - javascript không bằng

Quy ước rằng:

  • console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2, số
    var a = 1; //kiểu int
    var b = '2'; //kiểu string
    
    console.log(a > b);
    //kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`
    
    console.log(b + a);
    // kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
    
    9 và chuỗi rỗng
    var a = 1; //kiểu int
    
    console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
    //kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
    
    0 thì tương đương nhau.
  • var a = 1; //kiểu int
    var b = '2'; //kiểu string
    
    console.log(a > b);
    //kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`
    
    console.log(b + a);
    // kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
    
    0 và
    var a = 1; //kiểu int
    
    console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
    //kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
    
    2 thì tương đương nhau nhưng chúng không tương đương với bất kỳ giá trị nào khác.
  • var a = 1; //kiểu int
    
    console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
    //kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
    
    3 không tương đương với bất kỳ giá trị nào - bao gồm cả chính
    var a = 1; //kiểu int
    
    console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
    //kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
    
    3.
  • var a = 1; //kiểu int
    
    console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
    //kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
    
    5 là truthy nhưng khi so sánh với
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    0 hay
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2 thì kết quả luôn trả về là
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2.truthy nhưng khi so sánh với
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    0 hay
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2 thì kết quả luôn trả về là
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2.
  • Một mảng rỗng có giá trị là truthy nhưng khi so sánh với
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    0 sẽ cho kết quả là
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2, so sánh với
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2 lại cho kết quả là
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    0.truthy nhưng khi so sánh với
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    0 sẽ cho kết quả là
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2, so sánh với
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    2 lại cho kết quả là
    console.log(5 == 10);
    // expected output: false
    console.log(10 === 10);
    // expected output: true
    console.log(10 ==='10');
    // expected output: false
    
    console.log(5 > 10);
    // expected output: false
    console.log(5 >= 5);
    // expected output: false
    
    console.log(5 < 10);
    // expected output: true
    console.log(5 <= 5);
    // expected output: true
    
    0.

Ví dụ:

// all true
false == 0;
0 == '';
null == undefined;
[] == false;
!![0] == true;

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;

So sánh với toán tử logic // all true false == 0; 0 == ''; null == undefined; [] == false; !![0] == true; // all false false == null; NaN == NaN; Infinity == true; [] == true; [0] == true; 3

Hướng dẫn not equal javascript - javascript không bằng

Ngoại lệ duy nhất là

var a = 1; //kiểu int

console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
//kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
3 vẫn không tương đương với bất kỳ giá trị nào, kể cả chính nó.

Vài tips lời khuyên khi sử dụng

Tránh so sánh trực tiếp giá trị

Khi cần so sánh một giá trị với boolean, ít khi ta phải so sánh trực tiếp chúng với

console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
0 hay
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
2 mà chỉ cần xét đến giá trị đó là truthy hay falsy.truthy hay falsy.

// instead of
if (x == false) // ...
// runs if x is false, 0, '', or []

// use
if (!x) // ...
// runs if x is false, 0, '', NaN, null or undefined

Sử dụng // all true false == 0; 0 == ''; null == undefined; [] == false; !![0] == true; // all false false == null; NaN == NaN; Infinity == true; [] == true; [0] == true; 3 thay cho var a = 1; //kiểu int var b = '2'; //kiểu string console.log(a > b); //kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int` console.log(b + a); // kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21') 4

Khi cần so sánh hai giá trị có giống nhau hay không ta nên dùng toán tử so sánh

// all true
false == 0;
0 == '';
null == undefined;
[] == false;
!![0] == true;

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;
3 (hoặc
// instead of
if (x == false) // ...
// runs if x is false, 0, '', or []

// use
if (!x) // ...
// runs if x is false, 0, '', NaN, null or undefined
1) thay cho
var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
4 (hoặc
// instead of
if (x == false) // ...
// runs if x is false, 0, '', or []

// use
if (!x) // ...
// runs if x is false, 0, '', NaN, null or undefined
3) để tránh gặp vấn đề chuyển đổi kiểu giá trị.

// instead of
if (x == y) // ...
// runs if x and y are both truthy or both falsy
// e.g. x = null and y = undefined

// use
if (x === y) // ...
// runs if x and y are identical...
// except when both are NaN

Chuyển đổi sang giá trị boolean khi cần thiết

Bất cứ giá trị nào cũng có thể chuyển đổi sang giá trị boolean bằng cách sử dụng toán tử

// instead of
if (x == false) // ...
// runs if x is false, 0, '', or []

// use
if (!x) // ...
// runs if x is false, 0, '', NaN, null or undefined
6. Sử dụng toán tử này cho
var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
6 (
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
2,
var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
9,
// instead of
if (x == y) // ...
// runs if x and y are both truthy or both falsy
// e.g. x = null and y = undefined

// use
if (x === y) // ...
// runs if x and y are identical...
// except when both are NaN
0,
var a = 1; //kiểu int
var b = '2'; //kiểu string

console.log(a > b);
//kết quả trả về là `false`. Như vậy, biến `b` được hiểu với kiểu `int`

console.log(b + a);
// kết quả trả về là "21". Biến `a` được hiểu với kiểu `string` ('2' + '1' = '21')
0,
var a = 1; //kiểu int

console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
//kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
2,
var a = 1; //kiểu int

console.log(a == false) //khi so sánh `a` (kiểu `int`) với `false` (kiểu `boolean`) chương trình mong muốn a được hiểu theo kiểu `boolean`, khi đó giá trị truthy hay falsy của biến sẽ được xét đến
//kết quả trả về là `false`. Tại sao lại ra như vậy thì mình sẽ giải thích ở dưới nhé :D
3) sẽ nhận được giá trị là
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
2, và được sử dụng khi muốn kiểm tra 2 giá trị cùng là
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
4 hay
console.log(5 == 10);
// expected output: false
console.log(10 === 10);
// expected output: true
console.log(10 ==='10');
// expected output: false

console.log(5 > 10);
// expected output: false
console.log(5 >= 5);
// expected output: false

console.log(5 < 10);
// expected output: true
console.log(5 <= 5);
// expected output: true
3 hay không?

// instead of
if (x === y) // ...
// runs if x and y are identical...
// except when both are NaN

// use
if (!!x === !!y) // ...
// runs if x and y are identical...
// including when either or both are NaN

Tài liệu tham khảo

https://developer.mozilla.org

https://www.sitepoint.com/automatically-optimize-responsive-images-in-gatsby/

https://medium.com/better-programming/javascript-bang-bang-i-shot-you-down-use-of-double-bangs-in-javascript-7c9d94446054