Kinh Nghiệm về Javascript so sanh chuoi Chi Tiết

Pro đang tìm kiếm từ khóa Javascript so sanh chuoi được Cập Nhật vào lúc : 2022-04-12 21:46:13 . Với phương châm chia sẻ Thủ Thuật về trong nội dung bài viết một cách Chi Tiết Mới Nhất. Nếu sau khi đọc nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Ad lý giải và hướng dẫn lại nha.

254

Qua nội dung bài viết trước, bạn đã biết toán tử là gì, cũng như nhiều chủng loại toán tử trong JavaScript tương hỗ cho việc tính toán. Tiếp theo, mình sẽ tìm hiểu về toán tử so sánh trong JavaScript.

Nội dung chính

  • Toán tử so sánh là gì?
  • Kết quả của phép so sánh
  • So sánh string
  • So sánh khác kiểu tài liệu
  • So sánh bằng nghiêm ngặt
  • So sánh với null và undefined
  • Thứ tự ưu tiên của những toán tử so sánh
  • Tổng kết
  • Thực hành

Cụ thể, nội dung bài viết này triệu tập vào tìm hiểu toán tử so sánh là gì, nhiều chủng loại toán tử so sánh trong JS, kết quả của phép so sánh và một số trong những trường hợp đặc biệt quan trọng (dễ nhầm lẫn) khi so sánh.

Toán tử so sánh là gì?

Toán tử so sánh là toán tử hai ngôi dùng để so sánh giá trị của hai toán hạng với nhau.

Các toán tử so sánh trong JavaScript gồm có:

  • Toán tử so sánh to nhiều hơn > và toán tử so sánh nhỏ hơn <.
  • Toán tử so sánh to nhiều hơn hoặc bằng >= và toán tử so sánh nhỏ hơn hoặc bằng <=.
  • Toán tử so sánh bằng “không nghiêm ngặt” == và toán tử so sánh bằng “nghiêm ngặt” ===.
  • Toán tử so sánh khác “không nghiêm ngặt” != và toán tử so sánh khác “nghiêm ngặt” !==.

? Chú ý:

Toán tử so sánh bằng có hai (hoặc ba) dấu bằng.

You để ý quan tâm để tránh nhầm lẫn với toán tử gán – chỉ có một dấu bằng =.

Ví dụ những phép toán so sánh:

let a = 1;
let b = 2; a > b; a = b; a <= b; a == b; a === b; a != b; a !== b;

Kết quả của phép so sánh

Kết quả của phép so sánh vẫn là một giá trị kiểu boolean.

  • true: đúng, đúng chuẩn
  • false: sai, không đúng chuẩn

Ví dụ:

console.log(5 > 6); console.log(5 = 6); console.log(5 <= 6); console.log(5 == 6); console.log(5 === 6); console.log(5 != 6); console.log(5 !== 6);

You hoàn toàn có thể gán kết quả của phép so sánh cho một biến khác:

let ret = 6 > 9;
console.log(ret);

So sánh string

Quy tắc so sánh hai string trong JavaScript cũng như hầu hết những ngôn từ lập trình khác. Đó là so sánh theo thứ tự “từ điển”. Hay nói cách khác là so sánh từng vần âm một (từ trái sang phải).

Ví dụ so sánh những string:

console.log(“A” < "Z"); console.log("Small" < "Smart"); console.log("Big" < "BigBang");

Tóm tắt thuật toán so sánh hai string như sau:

So sánh kí tự thứ nhất của hai string.

  • Nếu kí tự thứ nhất của string(1) to nhiều hơn (hoặc nhỏ hơn) kí tự thứ nhất của string(2) thì string(1) to nhiều hơn (hoặc nhỏ hơn) string(2). Suy ra, so sánh kết thúc.
  • trái lại, nếu hai kí tự thứ nhất bằng nhau thì tiếp tục so sánh đến những kí tự thứ hai.

Lặp lại việc so sánh như trên, cho tới lúc so sánh kết thúc kết thúc hoặc đã so sánh hết những kí tự của tối thiểu một string.

  • Nếu hai string có cùng độ dài thì chúng bằng nhau.
  • trái lại, string nào dài hơn thế thì string đó to nhiều hơn.

Trong ví dụ so sánh “A” < "Z" kết quả là true. Quá trình so sánh tạm ngưng ở bước một.

Trong ví dụ so sánh “Small” < "Smart" kết quả là true. Quá trình so sánh lặp lại nhiều lần.

  • Kí tự thứ nhất S là giống nhau
  • Kí tự thứ hai m cũng tương tự như nhau
  • Kí tự thứ ba a cũng tương tự như nhau
  • Kí tự thứ tư l nhỏ hơn r. Suy ra, string “Small” nhỏ hơn string “Smart”.
  • Trong ví dụ so sánh “Big” < "BigBang" kết quả là true. Quá trình so sánh cùng lặp lại nhiều lần. Ba kí tự thứ nhất là "Big" đều giống nhau. Lúc này, string "Big" kết thúc. Trong khi, string "BigBang" còn thêm những kí tự "Bang" (độ dài string to nhiều hơn). Suy ra, string "Big" nhỏ hơn string "BigBang".

    ? Chú ý:

    Để so sánh hai kí tự với nhau, JavaScript so sánh giá trị của hai kí tự (dạng số) ở bảng mã Unicode.

    Trong bảng mã này, ta có thứ tự 0 < 9 < A < Z < a < z.

    Ngoài việc so sánh những vần âm Latinh ra thì JavaScript còn tồn tại thể so sánh những vần âm không phải Latinh.

    So sánh khác kiểu tài liệu

    Khi so sánh những toán hạng khác kiểu tài liệu, JavaScript quy đổi giá trị những toán hạng ra dạng số, ví dụ:

    console.log(“5” > 4); console.log(“01” == 1); console.log(“11” == 1);

    Đối với kiểu tài liệu boolean, true sẽ chuyển thành 1 và false chuyển thành 0.

    console.log(true == 1); console.log(false == 0);

    Việc so sánh khác kiểu tài liệu sử dụng toán tử bằng “không nghiêm ngặt” == dẫn đến một số trong những trường hợp “phi logic”, ví dụ:

    console.log(“” == 0); console.log(“0” == 0); console.log(“” == “0”);

    Kì lạ phải không?

    Nếu theo tính chất “bắc cầu” trong toán học thì nếu “” == 0 là true và “0” == 0 là true, suy ra “” == “0” cũng phải là true (vì cùng bằng 0).

    Nhưng thực tiễn lại không phải như vậy, hai phép so sánh thứ nhất là so sánh khác kiểu tài liệu, nên “” và “0” đều được chuyển thành dạng số và bằng 0.

    Trong khi phép so sánh thứ ba là so sánh cùng kiểu tài liệu, nên không còn quy trình quy đổi tài liệu xẩy ra. Dẫn đến, kết quả của phép so sánh cuối là false.

    Để xử lý và xử lý vấn đế này, JavaScript tạo ra toán tử so sánh bằng “nghiêm ngặt” ===.

    So sánh bằng nghiêm ngặt

    Đối với toán tử so sánh bằng “nghiêm ngặt”, JavaScript sẽ không còn thực thi quy đổi kiểu tài liệu.

    Nói cách khác, hai giá trị khác kiểu tài liệu thì luôn rất khác nhau, ví dụ:

    console.log(“” == 0); console.log(“” === 0);

    Tương tự với so sánh bằng nghiêm ngặt, JavaScript cũng luôn có thể có so sánh khác nghiêm ngặt, ví dụ:

    console.log(“” != 0); console.log(“” !== 0);

    ? Để tránh phạm phải những lỗi sai ngớ ngẩn khi so sánh trong JavaScript, bạn nên sử dụng toán tử so sánh bằng “nghiêm ngặt” === và toán tử so sánh khác “nghiêm ngặt” !==.

    So sánh với null và undefined

    Khác với những kiểu tài liệu khác, việc so sánh null và undefined thường không rõ ràng cho lắm.

    Khi sử dụng toán tử so sánh bằng “nghiêm ngặt” === thì dĩ nhiên là hai giá trị này rất khác nhau. Vì chúng khác kiểu tài liệu.

    console.log(null === undefined);

    Nhưng khi sử dụng toán tử so sánh bằng “không nghiêm ngặt” == thì kết quả lại là true.

    console.log(null == undefined);

    Thực tế, JavaScript đã quy định null và undefined là bằng nhau (với trường hợp ==). Và chúng không bằng (==) những giá trị khác.

    Khi sử dụng những toán tử so sánh >, = và <= thì sao?

    Hai giá trị này sẽ tiến hành chuyển sang dạng số. Cụ thể null chuyển thành 0 và undefined chuyển thành NaN.

    Khi sử dụng những toán tử so sánh >, = và <= với null và undefined thì kết quả đều false hết.

    console.log(null > undefined); console.log(null = undefined); console.log(null <= undefined);

    Bây giờ, mình thử so sánh hai giá trị này với số 0 xem có gì kỳ lạ không nào!

    So sánh null với 0

    console.log(null > 0); console.log(null >= 0); console.log(null == 0);

    Trong những phép so sánh (1), (2), null chuyển thành số 0 nên ta có đáp án lần lượt là false và true. Nhưng ở phép so sánh (3), null không chuyển thành 0 nên kết quả là false.

    Đây lại là một điều khá “phi logic”. Vì theo kết quả trên thì null to nhiều hơn hoặc bằng 0 (sử dụng >=), nhưng lại không bằng 0 (sử dụng ==).

    So sánh undefined với 0

    console.log(undefined > 0); console.log(undefined >= 0); console.log(undefined == 0);

    Kết quả là false hết.

    Trong những phép so sánh (1) và (2), undefined chuyển thành NaN nên chắc như đinh khác 0. Trong khi phép so sánh (3), undefined không bằng (==) 0. Vì như tôi đã nói ở trên, undefined chỉ bằng (==) null mà thôi.

    ? Để tránh những trường hợp “phi logic” trên, bạn nên làm so sánh null hoặc undefined khi sử dụng toán tử so sánh bằng “nghiêm ngặt” (===) hoặc toán tử so sánh khác “nghiêm ngặt” (!==).

    Không nên sử dụng toán tử >, = và <= với null và undefined.

    Trường hợp một biến hoàn toàn có thể null hoặc undefined thì bạn nên kiểm tra giá trị có bằng null hoặc undefined hay là không để xử lý trước. Khi biến khác null và undefined rồi thì mới thực thi so sánh với những toán tử >, = và <= sau.

    Thứ tự ưu tiên của những toán tử so sánh

    Các toán tử so sánh có thứ tự ưu tiên giống nhau. Khi trong biểu thức có nhiều toán tử so sánh, thứ tự thực thi là từ trái sang phải.

    Ví dụ:

    Thoạt đầu nhìn qua, bạn sẽ thấy kết quả trên là vô lý phải không?

    Vì theo toán học thì chắc như đinh số 3 to nhiều hơn số 2 và số 2 to nhiều hơn số 1, nên kết quả (2) phải bằng true mới hợp lý.

    Nhưng nếu bạn vận dụng đúng quy tắc thứ tự ưu tiên vào đây, bạn sẽ thấy kết quả trên là hoàn toàn đúng.

    Vì JavaScript sẽ thực thi so sánh hai số thứ nhất trước, 3 > 2 là đúng nên kết quả của phép so sánh này là true. Khi đó, mình hoàn toàn có thể viết lại như sau:

    Rõ ràng, đấy là phép so sánh hai kiểu tài liệu rất khác nhau. Vì vậy, true được chuyển thành dạng số và bằng 1. Mà 1 > 1 là false.

    Tóm lại, kết quả của phép so sánh trên là false.

    ? Khi thực thi tính toán, so sánh với những toán tử, bạn phải ghi nhớ thứ tự ưu tiên của những toán tử để biết đúng chuẩn thứ tự thực thi của những phép toán.

    Trường hợp bạn không chắc như đinh về thứ tự thực thi, bạn nên sử dụng cặp dấu ngoặc đơn (…) (toán tử nhóm) để thực thi phép toán một cách đúng chuẩn.

    Đoạn code trên hoàn toàn có thể viết lại thành console.log((3 > 2) > 1). Ở đây, tôi đã nhóm 3 > 2 thành một nhóm, nên chắc như đinh phép toán này thực thi trước.

    Nếu muốn 2 > 1 thực thi trước bạn viết lại thành console.log(3 > (2 > 1)). Kết quả của câu lệnh này là true.

    Tổng kết

    Sau đấy là những kiến thức và kỹ năng cơ bản cần nhớ về toán tử so sánh trong JavaScript:

    • Toán tử so sánh là toán tử hai ngôi dùng để so sánh giá trị của hai toán hạng với nhau. Và những toán tử so sánh trong JavaScript gồm có:
      • Toán tử so sánh to nhiều hơn > và toán tử so sánh nhỏ hơn <.
      • Toán tử so sánh to nhiều hơn hoặc bằng >= và toán tử so sánh nhỏ hơn hoặc bằng <=.
      • Toán tử so sánh bằng “không nghiêm ngặt” == và toán tử so sánh bằng “nghiêm ngặt” ===.
      • Toán tử so sánh khác “không nghiêm ngặt” != và toán tử so sánh khác “nghiêm ngặt” !==.
    • Kết quả của phép so sánh là giá trị kiểu boolean.
    • Khi so sánh string, JavaScript thực thi so sánh từng kí tự từ trái sang phải.
    • Khi so sánh những giá trị với kiểu tài liệu rất khác nhau, JavaScript chuyển những giá trị đó thành dạng số (trừ trường hợp so sánh với toán tử bằng “nghiêm ngặt” === và toán tử khác “nghiêm ngặt” !==).
    • Hai giá trị null và undefined bằng nhau (khi sử dụng toán tử ==) và luôn khác những giá trị còn sót lại.
    • Không nên sử dụng toán tử >, = và , = và <= sau.
    • Thứ tự ưu tiên của những toán tử so sánh là giống nhau. Nếu trong câu lệnh có nhiều toán tử so sánh thì thứ tự thực thi là từ trái sang phải.

    Thực hành

    Kết quả của những phép so sánh sau là gì?

    console.log(15 > 9); console.log(“no” = “24”); console.log(“3” > 24); console.log(null -1);

    ★ Nếu bạn thấy nội dung bài viết này hay thì hãy theo dõi mình trên Facebook để nhận được tin báo khi có nội dung bài viết tiên tiến và phát triển nhất nhé:

    Reply
    2
    0
    Chia sẻ

    Video Javascript so sanh chuoi ?

    You vừa tìm hiểu thêm nội dung bài viết Với Một số hướng dẫn một cách rõ ràng hơn về Review Javascript so sanh chuoi tiên tiến và phát triển nhất

    Share Link Down Javascript so sanh chuoi miễn phí

    Pro đang tìm một số trong những Chia Sẻ Link Cập nhật Javascript so sanh chuoi miễn phí.

    Giải đáp vướng mắc về Javascript so sanh chuoi

    Nếu sau khi đọc nội dung bài viết Javascript so sanh chuoi vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Admin lý giải và hướng dẫn lại nha
    #Javascript #sanh #chuoi