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

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

Nội dung chính ShowShow

  • 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?
  • 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 (! = &! ==).
  • 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ớ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 (! = &! ==).
  • 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.
  • 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.
  • Vấn đề
  • Vài tips lời khuyên khi sử dụng
  • Chuyển đổi sang giá trị boolean khi cần thiết
  • Vấn đề
  • Vài tips lời khuyên khi sử dụng
  • Chuyển đổi sang giá trị boolean khi cần thiết
  • Vài tips lời khuyên khi sử dụng
  • Chuyển đổi sang giá trị boolean khi cần thiết

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?
  • 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 (! = &! ==).
  • 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.

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

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

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 (! = &! ==).

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

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 (! = &! ==).

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.

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.

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

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.

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.

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.

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.

  • Vấn đề
  • Vài tips lời khuyên khi sử dụng
  • Chuyển đổi sang giá trị boolean khi cần thiết
  • 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
  • Tránh so sánh trực tiếp giá trị
  • 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

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

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.

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;
3truthy và falsy.
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
truthyfalsy.
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

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

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;
8, í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
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
11) 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
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
13) để 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. 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ị
    // all true
    false == 0;
    0 == '';
    null == undefined;
    [] == false;
    !![0] == true;
    
    // all false
    false == null;
    NaN == NaN;
    Infinity == true;
    [] == true;
    [0] == true;
    
    8 bằng cách sử dụng toán tử
    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
    
    16. 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,
    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')
    
    00,
    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?
  • 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')
    
    7
  • 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.

Ví dụ: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;
3truthy và falsy.
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
// all true
false == 0;
0 == '';
null == undefined;
[] == false;
!![0] == true;

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;
8, í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.
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 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
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
11) 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
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
13) để 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ị
    // all true
    false == 0;
    0 == '';
    null == undefined;
    [] == false;
    !![0] == true;
    
    // all false
    false == null;
    NaN == NaN;
    Infinity == true;
    [] == true;
    [0] == true;
    
    8 bằng cách sử dụng toán tử
    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
    
    16. 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,
    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')
    
    00,
    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?
  • Tài liệu tham khảo
  • Ở 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
    // all true
    false == 0;
    0 == '';
    null == undefined;
    [] == false;
    !![0] == true;
    
    // all false
    false == null;
    NaN == NaN;
    Infinity == true;
    [] == true;
    [0] == true;
    
    8 , 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

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

"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ì ...

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à 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
    
    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. 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.
  • Kiểu dữ liệu chuỗi 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

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

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

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;
8, í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.
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
1truthy hay falsy.
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

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
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
11) 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
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
13) để tránh gặp vấn đề chuyển đổi kiểu 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

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ị

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

// all false
false == null;
NaN == NaN;
Infinity == true;
[] == true;
[0] == true;
8 bằng cách sử dụng toán tử

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
16. 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,
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')
00,
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?
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')
7

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