Hướng dẫn javascript implicit - javascript ngầm

Loại ép buộc là quá trình chuyển đổi giá trị từ loại này sang loại khác.

Nội dung chính ShowShow

  • Phần nâng cao
  • Một tập hợp các quy tắc để hiểu được sự điên rồ
  • Trong lập trình, chuyển đổi loại là quá trình chuyển đổi dữ liệu của loại này sang loại khác. Ví dụ: Chuyển đổi dữ liệu chuỗi thành số. Có hai loại chuyển đổi loại trong JavaScript.
  • Loại cưỡng chế loại trong JavaScript là gì?
  • Loại cưỡng chế loại trong JavaScript là gì?
  • Kết quả không nhất quán của sự ép buộc loại
  • Sự khác biệt giữa chuyển đổi loại và ép buộc là gì?
  • Loại chuyển đổi JavaScript là gì?
  • Làm thế nào để bạn sử dụng loại ép buộc loại trong javascript?
  • Có thể chuyển đổi loại trong JavaScript không?

Khi chúng ta đang sử dụng

Number(‘89’) or String(55)

Để chuyển đổi một loại thành một loại khác, chúng tôi đang thực hiện một sự ép buộc rõ ràng vì chúng tôi đang tự chuyển đổi giá trị.Explicit coercion since we are converting the value by ourselves.Explicit coercion since we are converting the value by ourselves.

Nhưng trong một số trường hợp, động cơ JS cần chuyển đổi các biến để thực hiện một số hoạt động.

Ví dụ: khi chúng ta sử dụng

55 == ‘55’// or‘toto’ == { name: ‘toto’ }
8 (toán tử bằng nhau) nếu cả hai giá trị không cùng loại, nó sẽ cần sử dụng sự ép buộc ngầm (động cơ JS sẽ tự chuyển đổi giá trị).not the same type, it will need to use an Implicit coercion (JS engine will convert value by itself).not the same type, it will need to use an Implicit coercion (JS engine will convert value by itself).

Hãy cẩn thận, đừng nhầm với

55 == ‘55’// or‘toto’ == { name: ‘toto’ }
9 (bình đẳng nghiêm ngặt, sự ép buộc không được áp dụng vì chúng tôi đang so sánh loại trước giá trị)!

Câu hỏi là làm thế nào để nó xử lý quá trình này trong trường hợp này?how does it handle this process in this case?how does it handle this process in this case?

55 == ‘55’// or‘toto’ == { name: ‘toto’ }

Tôi cung cấp cho bạn một danh sách gian lận về quá trình này với một ví dụ được giải thích!

! [Danh sách bảng ép buộc nhanh] (https://dev-to-uploads.s3.amazonaws.com/i/nlpxeg7jrrkh5ufkb4hm.png)

Nó có cách nói chung/dễ dàng để hiểu quá trình nhưng đối với đối tượng so với bất kỳ so sánh nào, tôi đã tóm tắt một vài về quy trình.Object vs any comparison, I summarized a few about the process.Object vs any comparison, I summarized a few about the process.

Tôi sẽ giải thích sau đó quá trình này, nhưng nếu bạn chỉ muốn hiểu logic toàn cầu, bạn không cần điều này.

Thí dụ

Chuỗi so với số

// 1)

‘toto’ == 24

// Convert string into a number so

Number(‘toto’) == 24

// But we got NaN for this conversion

NaN == 24 // false !

Đối tượng vs String

// 2)‘hello’ == {}

// Use .toString() with object vs any

‘hello’ == {}.toString()

// So we got

‘hello’ == ‘[object Object]’ // false

Đối tượng vs Boolean

// 3)

true == {}

// Use .toString() with object vs anytrue == {}.toString()true == ‘[object Object]’ // number vs string

// convert boolean into number Number (true) = 1

1 == ‘[object Object]’

// We have String vs Number,
// Almost done! We just need to convert a string into number now

1 == Number(‘[object Object]’)

// But

1 == NaN // false !

Phần nâng cao

Đối với đối tượng so với bất kỳ so sánh nào, trên thực tế, nó phức tạp hơn một chút, chúng ta cần chia hoạt động này thành 2 loại.

Đối với đối tượng ngày chúng ta cần sử dụng

// 1)

‘toto’ == 24

// Convert string into a number so

Number(‘toto’) == 24

// But we got NaN for this conversion

NaN == 24 // false !

0, nếu lợi nhuận giá trị là nguyên thủy, hãy so sánh nó, khác sử dụng ____10, nếu giá trị này không phải là nguyên thủy, hãy ném một kiểudate object we need to use
// 1)

‘toto’ == 24

// Convert string into a number so

Number(‘toto’) == 24

// But we got NaN for this conversion

NaN == 24 // false !

0, if the value return is primitive, compare it, else use date object we need to use
// 1)

‘toto’ == 24

// Convert string into a number so

Number(‘toto’) == 24

// But we got NaN for this conversion

NaN == 24 // false !

0, if the value return is primitive, compare it, else use

55 == ‘55’// or‘toto’ == { name: ‘toto’ }
0, if this value is not primitive, throw a TypeError, else return the value

Đối với đối tượng khác, chúng ta cần sử dụng

55 == ‘55’// or‘toto’ == { name: ‘toto’ }
0, nếu lợi nhuận giá trị là nguyên thủy, hãy so sánh nó, khác sử dụng
// 1)

‘toto’ == 24

// Convert string into a number so

Number(‘toto’) == 24

// But we got NaN for this conversion

NaN == 24 // false !

0, nếu giá trị này không phải là nguyên thủy, hãy ném một kiểu mẫu, giá trị trả về khácother object we need to use
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
0, if the value return is primitive, compare it, else use
// 1)

‘toto’ == 24

// Convert string into a number so

Number(‘toto’) == 24

// But we got NaN for this conversion

NaN == 24 // false !

0, if this values is not a primitive, throw a TypeError, else return valueother object we need to use
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
0, if the value return is primitive, compare it, else use
// 1)

‘toto’ == 24

// Convert string into a number so

Number(‘toto’) == 24

// But we got NaN for this conversion

NaN == 24 // false !

0, if this values is not a primitive, throw a TypeError, else return value

!)

Nói chung, bạn sẽ chỉ sử dụng `.toString ()` Đối với đối tượng so với bất kỳ, nhưng bây giờ bạn có thể hiểu rõ hơn về việc xử lý cưỡng chế!

Chúng tôi đã có đầu ra mong đợi chứ không phải sự kết hợp.

Tránh trực tiếp == và sử dụng trên mạng ===. Dấu hiệu hai dấu bằng (==) thực hiện so sánh bình đẳng trừu tượng và dấu hiệu ba bằng (===) thực hiện so sánh bình đẳng nghiêm ngặt.Underrated skills in javascript, make the difference for FREE if you follow me on Twitter and MP me 😁Underrated skills in javascript, make the difference for FREE if you follow me on Twitter and MP me 😁

Don Tiết dựa vào chuyển đổi loại tự động của JavaScript, đặc biệt khi thực hiện các hoạt động số học. Cung cấp chuyển đổi loại rõ ràng bất cứ khi nào cần thiết.

Để đọc thêm về cách so sánh bình đẳng trừu tượng đã thực hiện đọc http://ecma-international.org/ecma-262/5.1/#sec-11.9.3

Để đọc thêm về cách so sánh bình đẳng nghiêm ngặt được thực hiện đọc http://ecma-international.org/ecma-262/5.1/#sec-11.9.6

Cảm ơn vì đã đọc. Kiểm tra blog của tôi tại đây.

Vui lòng cho tôi biết phản hồi của bạn hoặc bất kỳ đề xuất để cải thiện.

GitHub

Và bạn có thể đánh dấu 🔖 Bài viết này!

Một tập hợp các quy tắc để hiểu được sự điên rồ

Sự ép buộc loại ngầm thường được trích dẫn là một lý do tại sao JavaScript của JavaScript hút và nó dễ hiểu tại sao. Có gì trong đoạn mã này thực sự có ý nghĩa không?

Những gì đang xảy ra ở đây? (Nguồn: Tác giả)

Nếu bạn đã nhìn thấy cuộc nói chuyện sét đánh vui nhộn này của Gary Bernhardt - hãy xem nó ngay bây giờ.

Loại cưỡng chế là chuyển đổi tự động hoặc ẩn các giá trị từ loại dữ liệu này sang loại dữ liệu khác (chẳng hạn như chuỗi thành số). Chuyển đổi loại tương tự như ép buộc loại vì cả hai đều chuyển đổi các giá trị từ loại dữ liệu này sang loại dữ liệu khác với một sự khác biệt chính - ép buộc loại là ẩn khi chuyển đổi loại có thể là ẩn hoặc rõ ràng.

Nội phân chính

  • Loại cưỡng chế loại trong JavaScript là gì?
  • Kết quả không nhất quán của sự ép buộc loại
  • Sự khác biệt giữa chuyển đổi loại và ép buộc là gì?
  • Loại chuyển đổi JavaScript là gì?
  • Làm thế nào để bạn sử dụng loại ép buộc loại trong javascript?
  • Có thể chuyển đổi loại trong JavaScript không?

Trong lập trình, chuyển đổi loại là quá trình chuyển đổi dữ liệu của loại này sang loại khác. Ví dụ: Chuyển đổi dữ liệu chuỗi thành số. Có hai loại chuyển đổi loại trong JavaScript.

const value1 = "5";
const value2 = 9;
let sum = value1 + value2;

console.log(sum);

Loại cưỡng chế là chuyển đổi tự động hoặc ẩn các giá trị từ loại dữ liệu này sang loại dữ liệu khác (chẳng hạn như chuỗi thành số). Chuyển đổi loại tương tự như ép buộc loại vì cả hai đều chuyển đổi các giá trị từ loại dữ liệu này sang loại dữ liệu khác với một sự khác biệt chính - ép buộc loại là ẩn khi chuyển đổi loại có thể là ẩn hoặc rõ ràng.

Nội phân chính

sum = Number(value1) + value2;

Loại cưỡng chế loại trong JavaScript là gì?

Loại cưỡng chế loại trong JavaScript là gì?

Kết quả không nhất quán của sự ép buộc loại

Sự khác biệt giữa chuyển đổi loại và ép buộc là gì?

Loại chuyển đổi JavaScript là gì?

Làm thế nào để bạn sử dụng loại ép buộc loại trong javascript?

Kết quả không nhất quán của sự ép buộc loại

Sự khác biệt giữa chuyển đổi loại và ép buộc là gì?

Loại chuyển đổi JavaScript là gì?

Làm thế nào để bạn sử dụng loại ép buộc loại trong javascript?

Có thể chuyển đổi loại trong JavaScript không?

Trong lập trình, chuyển đổi loại là quá trình chuyển đổi dữ liệu của loại này sang loại khác. Ví dụ: Chuyển đổi dữ liệu chuỗi thành số. Có hai loại chuyển đổi loại trong JavaScript.

Loại cưỡng chế là chuyển đổi tự động hoặc ẩn các giá trị từ loại dữ liệu này sang loại dữ liệu khác (chẳng hạn như chuỗi thành số). Chuyển đổi loại tương tự như ép buộc loại vì cả hai đều chuyển đổi các giá trị từ loại dữ liệu này sang loại dữ liệu khác với một sự khác biệt chính - ép buộc loại là ẩn khi chuyển đổi loại có thể là ẩn hoặc rõ ràng.

Ví dụ== stockBPrice), we are comparing number value and string value.

Trong ví dụ trên, JavaScript đã ép buộc

55 == ‘55’// or‘toto’ == { name: ‘toto’ }
3 từ một số vào một chuỗi và sau đó kết nối hai giá trị với nhau, dẫn đến một chuỗi
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
4. JavaScript có một lựa chọn giữa một chuỗi hoặc một số và quyết định sử dụng một chuỗi.

Trình biên dịch có thể đã ép

55 == ‘55’// or‘toto’ == { name: ‘toto’ }
5 vào một số và trả lại một khoản tiền
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
6, nhưng không có. Để trả về kết quả này, bạn sẽ phải chuyển đổi rõ ràng
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
5 thành một số bằng phương thức
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
8:

Xem thêm

Loại cưỡng chế là chuyển đổi tự động hoặc ngầm định các giá trị 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.== stockBPrice), we are comparing number value and string value.

Loại cưỡng chế có thể hữu ích nhưng nó có thể gây ra sự không nhất quán.

Hãy để lấy ví dụ nhỏ,

Ví dụ 1

Lợi ích của việc ép buộc loại

Trong ví dụ trên, chúng tôi đang so sánh hai giá cổ phiếu và viết sản lượng vào bảng điều khiển.

Stockaprice là số và Stockbprice là chuỗi.

Trong nếu điều kiện, nếu (StockAprice == Stockbprice), chúng tôi đang so sánh giá trị số và giá trị chuỗi.

Để so sánh hai giá trị này, chúng tôi đang sử dụng dấu hiệu gấp đôi (==), so sánh bình đẳng này được gọi là so sánh bình đẳng trừu tượng. So sánh trừu tượng được thực hiện bằng cách sử dụng loại ép buộc có nghĩa là JavaScript sẽ cố gắng tự động chuyển đổi loại để tạo ra kết quả.

Trình biên dịch có thể đã ép

55 == ‘55’// or‘toto’ == { name: ‘toto’ }
5 vào một số và trả lại một khoản tiền
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
6, nhưng không có. Để trả về kết quả này, bạn sẽ phải chuyển đổi rõ ràng
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
5 thành một số bằng phương thức
55 == ‘55’// or‘toto’ == { name: ‘toto’ }
8:

Xem thêm

Loại cưỡng chế là chuyển đổi tự động hoặc ngầm định các giá trị 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.== stockBPrice), we are comparing number value and string value.

Loại cưỡng chế có thể hữu ích nhưng nó có thể gây ra sự không nhất quán.=== stockBPrice), we are comparing number value and string value but we have replaced “==” with “===”.

Hãy để lấy ví dụ nhỏ,tripe equal sign (===), this equality comparison is known as strict equality comparison. Strict comparison will return true only if the values have same type and equal values. Below is the output,

Ví dụ 1

Lợi ích của việc ép buộc loại

Trong ví dụ trên, chúng tôi đang so sánh hai giá cổ phiếu và viết sản lượng vào bảng điều khiển.

Stockaprice là số và Stockbprice là chuỗi.

Trong nếu điều kiện, nếu (StockAprice == Stockbprice), chúng tôi đang so sánh giá trị số và giá trị chuỗi.

Sau khi chuyển đổi rõ ràng dưới đây là đầu ra,

Chúng tôi đã có đầu ra mong đợi chứ không phải sự kết hợp.

Conclusion:

  • Tránh trực tiếp == và sử dụng trên mạng ===. Dấu hiệu hai dấu bằng (==) thực hiện so sánh bình đẳng trừu tượng và dấu hiệu ba bằng (===) thực hiện so sánh bình đẳng nghiêm ngặt.
  • Don Tiết dựa vào chuyển đổi loại tự động của JavaScript, đặc biệt khi thực hiện các hoạt động số học. Cung cấp chuyển đổi loại rõ ràng bất cứ khi nào cần thiết.
  • Để đọc thêm về cách so sánh bình đẳng trừu tượng đã thực hiện đọc http://ecma-international.org/ecma-262/5.1/#sec-11.9.3
  • Để đọc thêm về cách so sánh bình đẳng nghiêm ngặt được thực hiện đọc http://ecma-international.org/ecma-262/5.1/#sec-11.9.6

Cảm ơn vì đã đọc. Kiểm tra blog của tôi tại đây.

Vui lòng cho tôi biết phản hồi của bạn hoặc bất kỳ đề xuất để cải thiện.

Sự khác biệt giữa chuyển đổi loại và ép buộc là gì?

Chuyển đổi loại tương tự như ép buộc loại vì cả hai đều chuyển đổi các giá trị từ loại dữ liệu này sang loại dữ liệu khác với một sự khác biệt chính - ép buộc loại là ẩn khi chuyển đổi loại có thể là ẩn hoặc rõ ràng.type coercion is implicit whereas type conversion can be either implicit or explicit.type coercion is implicit whereas type conversion can be either implicit or explicit.

Loại chuyển đổi JavaScript là gì?

Loại chuyển đổi (hoặc typecasting) có nghĩa là chuyển dữ liệu từ loại dữ liệu này sang kiểu dữ liệu khác. Chuyển đổi ẩn xảy ra khi trình biên dịch (đối với các ngôn ngữ được biên dịch) hoặc thời gian chạy (đối với các ngôn ngữ tập lệnh như JavaScript) tự động chuyển đổi các loại dữ liệu. Mã nguồn cũng có thể yêu cầu chuyển đổi một cách rõ ràng.transfer of data from one data type to another. Implicit conversion happens when the compiler (for compiled languages) or runtime (for script languages like JavaScript) automatically converts data types. The source code can also explicitly require a conversion to take place.transfer of data from one data type to another. Implicit conversion happens when the compiler (for compiled languages) or runtime (for script languages like JavaScript) automatically converts data types. The source code can also explicitly require a conversion to take place.

Làm thế nào để bạn sử dụng loại ép buộc loại trong javascript?

Để ép buộc rõ ràng một giá trị cho một chuỗi trong javascript, chúng ta có thể sử dụng hàm chuỗi (). Để ngầm ép một giá trị cho một chuỗi, chúng ta có thể sử dụng toán tử + với bất kỳ toán hạng nào là một chuỗi. Chúng ta nên cẩn thận khi sử dụng loại ép buộc loại khi chúng ta muốn tạo một thao tác và một trong các loại toán hạng của chúng ta là một chuỗi.. To implicitly coerce a value to a string, we can use the + operator with any operand that is a string. We should be careful when using type coercion when we want to create an operation and one of our operand types is a string.. To implicitly coerce a value to a string, we can use the + operator with any operand that is a string. We should be careful when using type coercion when we want to create an operation and one of our operand types is a string.

Có thể chuyển đổi loại trong JavaScript không?

Trong lập trình, chuyển đổi loại là quá trình chuyển đổi dữ liệu của loại này sang loại khác. Ví dụ: Chuyển đổi dữ liệu chuỗi thành số. Có hai loại chuyển đổi loại trong JavaScript.There are two types of type conversion in JavaScript.There are two types of type conversion in JavaScript.