Chuyển đổi kiểu ẩn trong javascript

Mọi giá trị Javascript có thể bị ép thành true hoặc false. Ép buộc vào boolean

"name" + {} // "name[object Object]
6 có nghĩa là giá trị là trung thực. Ép buộc vào boolean
"name" + {} // "name[object Object]
7 có nghĩa là giá trị là sai

Có một số giá trị trong Javascript trả về giá trị giả, chúng là

  1. sai
  2. 0
  3. vô giá trị
  4. chưa xác định
  5. ""
  6. NaN
  7. -0

Mọi thứ khác là sự thật,

3 * "3" // 3 * 3
3 * Number("3") // 3 * 3
Number("5") // 5

Number("1.") // 1
Number("1.34") // 1.34
Number("0") // 0
Number("012") // 12

Number("1,") // NaN
Number("1+1") // NaN
Number("1a") // NaN
Number("one") // NaN
Number("text") // NaN
2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Các đoạn mã trên đều được, nhưng tốt hơn hết là bạn nên trình bày rõ ràng khi cố gắng xác định tính trung thực của một giá trị. Về cơ bản, đừng dựa vào sự ép buộc ngầm của Javascript, ngay cả khi bạn cảm thấy mình biết chúng một cách hoàn hảo.
Thay vì đoạn mã bên dưới,

3 * "3" // 3 * 3
3 * Number("3") // 3 * 3
Number("5") // 5

Number("1.") // 1
Number("1.34") // 1.34
Number("0") // 0
Number("012") // 12

Number("1,") // NaN
Number("1+1") // NaN
Number("1a") // NaN
Number("one") // NaN
Number("text") // NaN
3

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bất kỳ điều nào dưới đây là cách thực hành tốt hơn tùy thuộc vào yêu cầu của bạn

3 * "3" // 3 * 3
3 * Number("3") // 3 * 3
Number("5") // 5

Number("1.") // 1
Number("1.34") // 1.34
Number("0") // 0
Number("012") // 12

Number("1,") // NaN
Number("1+1") // NaN
Number("1a") // NaN
Number("one") // NaN
Number("text") // NaN
4

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Điều này là do ví dụ, bạn xác định một chức năng được cho là hoạt động với các số

3 * "3" // 3 * 3
3 * Number("3") // 3 * 3
Number("5") // 5

Number("1.") // 1
Number("1.34") // 1.34
Number("0") // 0
Number("012") // 12

Number("1,") // NaN
Number("1+1") // NaN
Number("1a") // NaN
Number("one") // NaN
Number("text") // NaN
5

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Vì vậy, nếu tôi gọi hàm thêm bằng 0, tôi sẽ luôn gặp lỗi ngoài ý muốn

3 * "3" // 3 * 3
3 * Number("3") // 3 * 3
Number("5") // 5

Number("1.") // 1
Number("1.34") // 1.34
Number("0") // 0
Number("012") // 12

Number("1,") // NaN
Number("1+1") // NaN
Number("1a") // NaN
Number("one") // NaN
Number("text") // NaN
6

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

NaN


// concatenation
1 + "2" // "12"
1 + "js" // "1js"

// addition
1 + 2 // 3
1 + 2 + 1 // 4

//addition, then concatenation
1 + 2 + "1" // "31"
(1 + 2) + "1" // "31"

//concatenation all through
1 + "2" + 1 // "121"
(1 + "2") + 1 // "121"
4 là một giá trị số đặc biệt không bằng chính nó

3 * "3" // 3 * 3
3 * Number("3") // 3 * 3
Number("5") // 5

Number("1.") // 1
Number("1.34") // 1.34
Number("0") // 0
Number("012") // 12

Number("1,") // NaN
Number("1+1") // NaN
Number("1a") // NaN
Number("one") // NaN
Number("text") // NaN
7

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình


// concatenation
1 + "2" // "12"
1 + "js" // "1js"

// addition
1 + 2 // 3
1 + 2 + 1 // 4

//addition, then concatenation
1 + 2 + "1" // "31"
(1 + 2) + "1" // "31"

//concatenation all through
1 + "2" + 1 // "121"
(1 + "2") + 1 // "121"
4 là giá trị Javascript duy nhất không bằng chính nó. Vì vậy, bạn có thể kiểm tra

// concatenation
1 + "2" // "12"
1 + "js" // "1js"

// addition
1 + 2 // 3
1 + 2 + 1 // 4

//addition, then concatenation
1 + 2 + "1" // "31"
(1 + 2) + "1" // "31"

//concatenation all through
1 + "2" + 1 // "121"
(1 + "2") + 1 // "121"
4 bằng cách so sánh nó với chính nó

3 * "3" // 3 * 3
3 * Number("3") // 3 * 3
Number("5") // 5

Number("1.") // 1
Number("1.34") // 1.34
Number("0") // 0
Number("012") // 12

Number("1,") // NaN
Number("1+1") // NaN
Number("1a") // NaN
Number("one") // NaN
Number("text") // NaN
8

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

ECMAScript 6 đã giới thiệu phương pháp kiểm tra NaN,

"name" + {} // "name[object Object]
21

3 * "3" // 3 * 3
3 * Number("3") // 3 * 3
Number("5") // 5

Number("1.") // 1
Number("1.34") // 1.34
Number("0") // 0
Number("012") // 12

Number("1,") // NaN
Number("1+1") // NaN
Number("1a") // NaN
Number("one") // NaN
Number("text") // NaN
9

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Cẩn thận với hàm toàn cầu

"name" + {} // "name[object Object]
22, nó cố gắng ép buộc đối số của nó trước khi kiểm tra xem nó có phải là

// concatenation
1 + "2" // "12"
1 + "js" // "1js"

// addition
1 + 2 // 3
1 + 2 + 1 // 4

//addition, then concatenation
1 + 2 + "1" // "31"
(1 + 2) + "1" // "31"

//concatenation all through
1 + "2" + 1 // "121"
(1 + "2") + 1 // "121"
4 không. Ví dụ,


// concatenation
1 + "2" // "12"
1 + "js" // "1js"

// addition
1 + 2 // 3
1 + 2 + 1 // 4

//addition, then concatenation
1 + 2 + "1" // "31"
(1 + 2) + "1" // "31"

//concatenation all through
1 + "2" + 1 // "121"
(1 + "2") + 1 // "121"
0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Nên tránh sử dụng hàm global

"name" + {} // "name[object Object]
22, cách thức hoạt động tương tự như hàm bên dưới


// concatenation
1 + "2" // "12"
1 + "js" // "1js"

// addition
1 + 2 // 3
1 + 2 + 1 // 4

//addition, then concatenation
1 + 2 + "1" // "31"
(1 + 2) + "1" // "31"

//concatenation all through
1 + "2" + 1 // "121"
(1 + "2") + 1 // "121"
1

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Đó là hầu hết sự ép buộc ngầm. Nếu tôi bỏ lỡ điều gì đó, vui lòng bấm chuông trong phần bình luận bên dưới và cảm ơn vì đã đọc hết

Chuyển đổi ngầm định trong JavaScript là gì?

Trong một số trường hợp nhất định, JavaScript tự động chuyển đổi một loại dữ liệu này sang loại dữ liệu khác (sang đúng loại) . Điều này được gọi là chuyển đổi ngầm.

Loại chuyển đổi ngầm định là gì?

Chuyển đổi loại ngầm định, còn được gọi là ép buộc, là chuyển đổi loại tự động được thực hiện bởi công cụ truy vấn động . Chuyển đổi loại ẩn được sử dụng khi các loại đối số không khớp với các loại tham số bắt buộc của hàm.

Ví dụ về ép buộc kiểu ẩn trong JavaScript là gì?

Cưỡng chế loại là chuyển đổi giá trị tự động hoặc ngầm định từ loại dữ liệu này sang loại dữ liệu khác . Ví dụ: chuyển đổi giá trị chuỗi thành giá trị số tương đương. Nó còn được gọi là chuyển đổi loại. Loại ép buộc có thể hữu ích nhưng nó có thể gây ra sự không nhất quán.