So sánh 2 string trong javascript

Toán tử so sánh trong JavaScript

Toán tử so sánh trong JavaScript hay còn gọi là toán tử quan hệ, là các toán tử được đặt giữa 2 hạng tử và so sánh mối quan hệ giữa chúng trong JavaScript.

Để thực hiện các phép so sánh trong JavaScript, chúng ta sử dụng 4 loại toán tử quan hệ được liệt kê trong bảng dưới đây:

Toán tửBiểu thức điều kiệnÝ nghĩa>x > yx lớn hơn y>=x >= yx lớn hơn hoặc bằng y b // false a == b // false a = b // true`Code language: JavaScript [javascript] 0 đều trả về false. `if [null] {

// It will not reach here  
} else if [0] {
// It will not reach here  
} else if [""] {
// It will not reach here  
} else if [1] {
// REACH here  
} `Code language: JavaScript [javascript] 9 được thiết kế để mọi phép so sánh `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 5, `false == false // It will return true. Too easy, right ? :D // But how about the following ? TRUE or FALSE ? // Các phép so sánh sau trả về true hay false null == undefined // true null == false // false undefined == false // false NaN == NaN // false NaN == false // false NaN == true // false 63 == false // false 63 == true // false 0 == false // true "63" == true // false "63" == false // false "0" == true // false "0" == false // true !"0" == !false // false "" == false // true [] == "" // true [] == false // true [] == "0" // false [] == 0 // true [] == ![] // true "0" == !"0" // true 0 == {} // false [1] < 2 // true // Initialize variables - Khởi tạo biến a = {} b = {} // TRUE or FALSE ? Các phép so sánh sau trả về TRUE hay FALSE ? a < b // false a > b // false a == b // false a = b // true`Code language: JavaScript [javascript] 3, `false == false // It will return true. Too easy, right ? :D // But how about the following ? TRUE or FALSE ? // Các phép so sánh sau trả về true hay false null == undefined // true null == false // false undefined == false // false NaN == NaN // false NaN == false // false NaN == true // false 63 == false // false 63 == true // false 0 == false // true "63" == true // false "63" == false // false "0" == true // false "0" == false // true !"0" == !false // false "" == false // true [] == "" // true [] == false // true [] == "0" // false [] == 0 // true [] == ![] // true "0" == !"0" // true 0 == {} // false [1] < 2 // true // Initialize variables - Khởi tạo biến a = {} b = {} // TRUE or FALSE ? Các phép so sánh sau trả về TRUE hay FALSE ? a < b // false a > b // false a == b // false a = b // true`Code language: JavaScript [javascript] 4, `false == false // It will return true. Too easy, right ? :D // But how about the following ? TRUE or FALSE ? // Các phép so sánh sau trả về true hay false null == undefined // true null == false // false undefined == false // false NaN == NaN // false NaN == false // false NaN == true // false 63 == false // false 63 == true // false 0 == false // true "63" == true // false "63" == false // false "0" == true // false "0" == false // true !"0" == !false // false "" == false // true [] == "" // true [] == false // true [] == "0" // false [] == 0 // true [] == ![] // true "0" == !"0" // true 0 == {} // false [1] < 2 // true // Initialize variables - Khởi tạo biến a = {} b = {} // TRUE or FALSE ? Các phép so sánh sau trả về TRUE hay FALSE ? a < b // false a > b // false a == b // false a = b // true`Code language: JavaScript [javascript] 5, `false == false // It will return true. Too easy, right ? :D // But how about the following ? TRUE or FALSE ? // Các phép so sánh sau trả về true hay false null == undefined // true null == false // false undefined == false // false NaN == NaN // false NaN == false // false NaN == true // false 63 == false // false 63 == true // false 0 == false // true "63" == true // false "63" == false // false "0" == true // false "0" == false // true !"0" == !false // false "" == false // true [] == "" // true [] == false // true [] == "0" // false [] == 0 // true [] == ![] // true "0" == !"0" // true 0 == {} // false [1] < 2 // true // Initialize variables - Khởi tạo biến a = {} b = {} // TRUE or FALSE ? Các phép so sánh sau trả về TRUE hay FALSE ? a < b // false a > b // false a == b // false a = b // true`Code language: JavaScript [javascript] 6, với `if [null] {
// It will not reach here  
} else if [0] {
// It will not reach here  
} else if [""] {
// It will not reach here  
} else if [1] {
// REACH here  
} `Code language: JavaScript [javascript] 9 đều trả về `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 0. Chỉ có phép so sánh `false == false // It will return true. Too easy, right ? :D // But how about the following ? TRUE or FALSE ? // Các phép so sánh sau trả về true hay false null == undefined // true null == false // false undefined == false // false NaN == NaN // false NaN == false // false NaN == true // false 63 == false // false 63 == true // false 0 == false // true "63" == true // false "63" == false // false "0" == true // false "0" == false // true !"0" == !false // false "" == false // true [] == "" // true [] == false // true [] == "0" // false [] == 0 // true [] == ![] // true "0" == !"0" // true 0 == {} // false [1] < 2 // true // Initialize variables - Khởi tạo biến a = {} b = {} // TRUE or FALSE ? Các phép so sánh sau trả về TRUE hay FALSE ? a < b // false a > b // false a == b // false a = b // true`Code language: JavaScript [javascript] 9 là trả về `true mà thôi.
  • Trong phép toán ép kiểu về String thì Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 3 sẽ thành `true`2, `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 4 sẽ thành `true`4, `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 0 sẽ thành `true`6 còn `true sẽ thành `true`8.
  • Tuy nhiên, nếu `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 4 hay `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 3 nằm trong một mảng thì chúng sẽ được chuyển về thành xâu rỗng. [facepalm]
  • `String[null] // "null" String[[null]] // "" [null, undefined] == "," // true [null] == 0 // true [undefined] == 0 // true `Code language: JavaScript [javascript]

    • Trong phép toán ép kiểu về Number thì `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 3 sẽ thành `if [null] {
      // It will not reach here  
      
      } else if [0] {
      // It will not reach here  
      
      } else if [""] {
      // It will not reach here  
      
      } else if [1] {
      // REACH here  
      
      } `Code language: JavaScript [javascript] 6, `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 4 sẽ thành `if [null] {
      // It will not reach here  
      
      } else if [0] {
      // It will not reach here  
      
      } else if [""] {
      // It will not reach here  
      
      } else if [1] {
      // REACH here  
      
      } `Code language: JavaScript [javascript] 9.
    • Phép phủ định Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 05 của một biến, hay một giá trị sẽ ép kiểu biến hay giá trị đó về Boolean trước, sau đó sẽ lấy phủ định. Từ đó ta có `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 06 sẽ là `true, còn Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 08 sẽ là `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 0. Dựa vào tính chất này, ta có thêm một cách đơn giản để check xem một giá trị có Boolean là `true hay `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 0, đó là dùng phép `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 05 2 lần. Ví dụ:

    `!!0 //false !!"0" // true !![] // true !!{} // true `Code language: JavaScript [javascript]

    • Phép toán `false == false // It will return true. Too easy, right ? :D // But how about the following ? TRUE or FALSE ? // Các phép so sánh sau trả về true hay false null == undefined // true null == false // false undefined == false // false NaN == NaN // false NaN == false // false NaN == true // false 63 == false // false 63 == true // false 0 == false // true "63" == true // false "63" == false // false "0" == true // false "0" == false // true !"0" == !false // false "" == false // true [] == "" // true [] == false // true [] == "0" // false [] == 0 // true [] == ![] // true "0" == !"0" // true 0 == {} // false [1] < 2 // true // Initialize variables - Khởi tạo biến a = {} b = {} // TRUE or FALSE ? Các phép so sánh sau trả về TRUE hay FALSE ? a < b // false a > b // false a == b // false a = b // true`Code language: JavaScript [javascript] 5 thực sự là một cái bẫy nữa. Như trong tiếng Việt thì ta sẽ gọi đó là phép toán lớn hơn hoặc bằng, tuy nhiên thực tế Javascript lại không dịch như vậy, nó hiểu `false == false // It will return true. Too easy, right ? :D // But how about the following ? TRUE or FALSE ? // Các phép so sánh sau trả về true hay false null == undefined // true null == false // false undefined == false // false NaN == NaN // false NaN == false // false NaN == true // false 63 == false // false 63 == true // false 0 == false // true "63" == true // false "63" == false // false "0" == true // false "0" == false // true !"0" == !false // false "" == false // true [] == "" // true [] == false // true [] == "0" // false [] == 0 // true [] == ![] // true "0" == !"0" // true 0 == {} // false [1] < 2 // true // Initialize variables - Khởi tạo biến a = {} b = {} // TRUE or FALSE ? Các phép so sánh sau trả về TRUE hay FALSE ? a < b // false a > b // false a == b // false a = b // true`Code language: JavaScript [javascript] 5 là phép toán không nhỏ hơn.
    • Tức phép toán `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 15 không phải tương đương với `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 16, mà nó tương đương với `Boolean[1] // true String[null] // "null" Number["10.3"] // 10.3 Number["1string"] // NaN String[[1, 2, "string"]] // "1,2,string" `Code language: JavaScript [javascript] 17

    The Answers

    Dưới đây là đáp án cho những câu hỏi được đưa ra ở đầu bài viết.

    Nếu bạn đã đọc hết phần phía trên rồi thì chắc có thể hiểu được tại sao nó lại ra được đáp án như dưới đây. Còn nếu có câu nào mà bạn vẫn chưa hiểu được nguyên nhân thì điều đó có nghĩa là bạn đã bỏ sót điều gì đó rồi đấy, kéo lên đọc lại thôi [honho]

    Chủ Đề