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ụ.

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 hayconsole.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 hayconsole.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

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

//developer.mozilla.org

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

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

Chủ đề