Tại sao JavaScript không được gõ?

Chúng tôi biết hai loại dữ liệu khác nhau. số và chuỗi. Ví dụ: chúng ta có thể cộng các số, vì phép cộng là một phép toán đối với loại "số"

Nhưng nếu bạn thêm một số vào một chuỗi thì sao?

console.log[1 + '7']; // => '17'

Mặc dù '7' là một chuỗi, trình thông dịch JavaScript đã trả về 17 như thể chúng ta đang thêm hai chuỗi. Khi JavaScript nhận thấy loại không khớp, nó sẽ cố gắng chuyển đổi dữ liệu. Trong trường hợp của chúng tôi, nó chuyển đổi số 1 thành một chuỗi '1' và sau đó chỉ cần nối '1''7'

Không phải tất cả các ngôn ngữ có thể làm điều này. JavaScript là một ngôn ngữ gõ yếu. Nó nhận dạng các loại dữ liệu khác nhau [số, chuỗi, v.v. ], nhưng không sử dụng chúng quá nghiêm ngặt, cố gắng chuyển đổi dữ liệu khi có vẻ hợp lý. JavaScript thậm chí đôi khi lao vào cực đoan. Hầu hết các biểu thức không hoạt động trong các ngôn ngữ khác đều hoạt động hoàn hảo trong JavaScript. Cố gắng thực hiện bất kỳ phép toán số học nào [ngoại trừ phép cộng] với chuỗi hoặc kiểu dữ liệu khác [ngoại trừ khi cả hai toán hạng đều là số hoặc chuỗi chỉ bao gồm các số]. Bạn sẽ thấy rằng chúng luôn hoạt động và trả về NaN, điều này hợp lý

const result = 'one' * 'two';
console.log[result]; // => NaN

https. // thay thế. com/@hexlet/js-basics-immutability-of-primitive-types

Trong các ngôn ngữ được gõ mạnh, việc thêm số vào chuỗi sẽ không hoạt động

JavaScript được tạo ra cho Internet, nơi tất cả thông tin được lưu trữ trong các chuỗi. Ngay cả khi bạn nhập số điện thoại hoặc năm sinh trên một trang web, thông tin đó sẽ chuyển đến máy chủ dưới dạng chuỗi chứ không phải số. Vì vậy, các nhà thiết kế ngôn ngữ đã quyết định rằng chuyển đổi loại tự động là phù hợp và thuận tiện

Chuyển đổi loại tự động ngầm này thực sự thuận tiện. Nhưng trong thực tế, tính năng này gây ra rất nhiều lỗi, khó phát hiện. Mã có thể hoạt động hoặc không thành công, tùy thuộc vào việc bạn có đủ may mắn để quá trình chuyển đổi tự động được thực hiện chính xác hay không. Một lập trình viên có thể không nhận thấy điều này ngay lập tức

Bạn sẽ gặp những trường hợp này hơn một lần trong các nhiệm vụ tiếp theo. Bạn sẽ thường hỏi "Tại sao mã của tôi không hoạt động theo cách tôi mong đợi?"

Gõ yếu chạy như một sợi chỉ trong toàn bộ quá trình phát triển Javascript

Hướng dẫn

In kết quả của

const result = 'one' * 'two';
console.log[result]; // => NaN
0. Chuyển đổi
const result = 'one' * 'two';
console.log[result]; // => NaN
0 thành một chuỗi. Thử nghiệm với các số khác nữa

Bài tập không vượt qua kiểm tra. phải làm gì?

Nếu bạn gặp bế tắc, đã đến lúc đặt câu hỏi của bạn trong «Thảo luận». Làm thế nào để đặt một câu hỏi một cách chính xác

  • Hãy chắc chắn đính kèm đầu ra thử nghiệm, nếu không có nó thì hầu như không thể tìm ra điều gì đã xảy ra, ngay cả khi bạn hiển thị mã của mình. Các nhà phát triển rất phức tạp khi thực thi mã trong đầu, nhưng có một sai lầm trước mắt họ có lẽ sẽ hữu ích nhất

Trong môi trường của tôi, mã hoạt động, nhưng không phải ở đây 🤨

Các bài kiểm tra được thiết kế để chúng kiểm tra giải pháp theo những cách khác nhau và dựa trên các dữ liệu khác nhau. Thường thì giải pháp hoạt động với một loại dữ liệu đầu vào nhưng không hoạt động với các loại dữ liệu khác. Kiểm tra tab «Kiểm tra» để tìm ra điều này, bạn có thể tìm thấy các gợi ý ở đầu ra lỗi

Mã của tôi khác với mã của giáo viên 🤔

Tốt rồi. 🙆 Một nhiệm vụ trong lập trình có thể được giải quyết theo nhiều cách khác nhau. Nếu mã của bạn vượt qua tất cả các bài kiểm tra, thì mã đó tuân thủ các điều kiện của tác vụ

Trong một số trường hợp hiếm hoi, giải pháp có thể được điều chỉnh để thử nghiệm, nhưng điều này có thể được nhìn thấy ngay lập tức

Tôi đã đọc các bài học nhưng không có gì rõ ràng 🙄

Thật khó để tạo ra những tài liệu giáo dục phù hợp với tất cả mọi người. Chúng tôi cố gắng hết sức nhưng luôn có điều gì đó cần cải thiện. Nếu bạn thấy một tài liệu không rõ ràng đối với bạn, hãy mô tả vấn đề trong “Thảo luận”. Sẽ thật tuyệt nếu bạn viết những điểm chưa rõ ràng trong mẫu câu hỏi. Thông thường, chúng tôi cần một vài ngày để sửa chữa

Nhân tiện, bạn có thể tham gia cải tiến các khóa học. Có một liên kết bên dưới đến mã khóa học bài học mà bạn có thể chỉnh sửa ngay trong trình duyệt của mình

Ngôn ngữ lập trình được gõ mạnh là ngôn ngữ trong đó mỗi loại dữ liệu, chẳng hạn như số nguyên, ký tự, số thập lục phân và số thập phân được đóng gói, được xác định trước như một phần của ngôn ngữ lập trình và tất cả các hằng số hoặc biến được xác định cho một chương trình nhất định phải được mô tả bằng một trong . Một số hoạt động nhất định có thể chỉ được phép với các loại dữ liệu cụ thể

Ngôn ngữ lập trình được gõ mạnh đề cập đến một ý tưởng mô tả việc thực thi các hạn chế của công ty đối với việc trộn các loại và giá trị dữ liệu khác nhau. Khi có vi phạm, lỗi, còn được gọi là ngoại lệ, xảy ra. Ngôn ngữ lập trình được gõ mạnh sử dụng trình biên dịch ngôn ngữ để thực thi việc tuân thủ kiểu gõ dữ liệu

Trình biên dịch ngôn ngữ được sử dụng để thực thi việc tuân thủ nhập dữ liệu cho các ngôn ngữ lập trình được nhập mạnh

Ưu và nhược điểm của ngôn ngữ lập trình kiểu gõ mạnh

Các ngôn ngữ lập trình được gõ mạnh có những lợi ích và hạn chế của chúng

Ưu điểm chính của việc nhập dữ liệu mạnh là nó thực thi một bộ quy tắc nghiêm ngặt để đảm bảo tính nhất quán nhất định của kết quả. Hơn nữa, một trình biên dịch có thể nhanh chóng phát hiện một đối tượng đang được gửi một thông báo mà nó sẽ không phản hồi, ngăn ngừa lỗi thời gian chạy. Các lợi ích khác bao gồm không có hình phạt thời gian chạy để xác định loại, tăng tốc phát triển bằng cách phát hiện lỗi sớm hơn và mã được tối ưu hóa tốt hơn từ trình biên dịch

Tuy nhiên, một nhược điểm lớn của việc sử dụng ngôn ngữ lập trình kiểu gõ mạnh là lập trình viên mất tính linh hoạt. Ví dụ: các ngôn ngữ lập trình được gõ mạnh ngăn lập trình viên phát minh ra một loại dữ liệu không được các nhà phát triển ngôn ngữ lập trình dự đoán. Nó giới hạn mức độ sáng tạo của một người khi sử dụng một loại dữ liệu nhất định. Việc gõ mạnh trong ngôn ngữ lập trình cũng khiến việc xác định các tập hợp các đối tượng không đồng nhất trở nên khó khăn hơn

Thời gian chạy là giai đoạn cuối cùng của vòng đời lập trình

mạnh mẽ vs. ngôn ngữ lập trình gõ lỏng lẻo

Trong lập trình máy tính, một ngôn ngữ lập trình được gõ mạnh nếu nó yêu cầu đặc điểm kỹ thuật của các kiểu dữ liệu. Một ngôn ngữ lập trình được gõ lỏng lẻo hoặc gõ yếu khi nó không yêu cầu đặc tả rõ ràng của các loại đối tượng và biến khác nhau. Các quy tắc gõ "lỏng lẻo" trong các ngôn ngữ lập trình được gõ yếu có thể tạo ra kết quả sai hoặc không thể đoán trước. Nó có thể thực hiện các chuyển đổi kiểu ẩn trong thời gian chạy

Trong các ngôn ngữ lập trình, các khái niệm gõ mạnh, gõ yếu, gõ lỏng lẻo có liên quan nhưng khác với gõ tĩnh và gõ động. Một ngôn ngữ lập trình được gõ mạnh có thể được gõ tĩnh hoặc động

Trong kiểu gõ tĩnh, việc kiểm tra kiểu diễn ra tại thời điểm biên dịch và nắm bắt những thứ như hàm bị thiếu, đối số kiểu không hợp lệ hoặc sự không khớp giữa giá trị dữ liệu và kiểu biến mà nó được gán -- trước khi chương trình có cơ hội chạy . Trong các ngôn ngữ có kiểu động, việc kiểm tra kiểu diễn ra trong thời gian chạy, vì vậy trình biên dịch sẽ bỏ qua các đối số kiểu không hợp lệ hoặc dữ liệu không khớp. Nếu trình kiểm tra loại phát hiện lỗi, nó sẽ cảnh báo cho nhà phát triển sửa mã để tránh chương trình bị lỗi

Ví dụ về các ngôn ngữ lập trình được gõ mạnh và lỏng lẻo

Dưới đây là một số ví dụ về ngôn ngữ lập trình được gõ mạnh và gõ lỏng lẻo

Các ngôn ngữ lập trình được gõ mạnh bao gồm các ngôn ngữ sau

  • C
  • C++
  • C#
  • Java
  • pascal
  • con trăn
  • bản đánh máy

Các ngôn ngữ lập trình được gõ lỏng lẻo bao gồm những điều sau đây

  • C
  • JavaScript
  • perl
  • PHP
  • hồng ngọc
  • vỏ bọc

Tại sao Java là một ngôn ngữ gõ mạnh?

Java được coi là kiểu dữ liệu mạnh vì nó yêu cầu khai báo mọi biến có kiểu dữ liệu. Người dùng không thể tạo một biến mà không có phạm vi giá trị mà nó có thể chứa. Khi đã khai báo thì không thể thay đổi kiểu dữ liệu của biến

Tại sao Python là ngôn ngữ được gõ mạnh?

Python được gõ mạnh vì trình thông dịch theo dõi tất cả các loại biến. Python có thể rất năng động, vì nó hiếm khi sử dụng thông tin này để hạn chế việc sử dụng biến

C là ngôn ngữ lập trình được gõ mạnh hay yếu?

C được gõ mạnh ở chỗ phải chỉ rõ kiểu biến khi khai báo biến. Tuy nhiên, C cũng có thể được coi là kiểu gõ yếu vì người dùng có thể chuyển đổi kiểu dữ liệu thông qua ép kiểu và không gặp lỗi trình biên dịch

Tại sao C ++ là ngôn ngữ lập trình được gõ mạnh?

Ngôn ngữ lập trình C++ được coi là ngôn ngữ được gõ mạnh và có tính đa hình tham số có sẵn thông qua các mẫu. Điều này có nghĩa là bạn có thể tạo một tập hợp các loại dữ liệu chung và thể hiện chúng một cách chính xác

Tại sao C# là ngôn ngữ lập trình được gõ mạnh?

C# là ngôn ngữ lập trình được gõ mạnh vì tất cả các loại biến phải được chỉ định và tất cả các lỗi được phát hiện và gắn cờ trong quá trình biên dịch

Tại sao JavaScript là ngôn ngữ lập trình được gõ yếu?

Không giống như C#, JavaScript là ngôn ngữ lập trình được gõ yếu vì bạn không phải chỉ định trước loại biến

Khám phá các ngôn ngữ lập trình đã chết mà chúng ta không bao giờ nên quên và so sánh các ngôn ngữ lập trình hàng đầu

Thông tin này được cập nhật lần cuối vào Tháng 6 năm 2022

ĐỌC TIẾP Về ngôn ngữ lập trình được gõ mạnh

  • Các nhà phát triển ngôn ngữ lập trình theo yêu cầu nên biết
  • Khắc phục 10 ví dụ phổ biến về RuntimeException trong Java
  • Sửa 10 lỗi thời gian biên dịch phổ biến nhất trong Java
  • Thuốc generic Golang khơi dậy sự phấn khích, lo lắng khi phát hành đầu nguồn
  • Áp dụng các phương pháp hay nhất về chính sách dưới dạng mã để thu được lợi ích

Điều khoản liên quan

giao diện lập trình ứng dụng [API]Giao diện lập trình ứng dụng [API] là mã cho phép hai chương trình phần mềm giao tiếp với nhau. Xem định nghĩa đầy đủ về luật Hofstadter Luật Hofstadter quy định rằng một dự án luôn mất nhiều thời gian hơn dự kiến, ngay cả khi luật được tính đến. Xem ứng dụng định nghĩa đầy đủ Ứng dụng gốc là một chương trình phần mềm mà nhà phát triển xây dựng để sử dụng trên một nền tảng hoặc thiết bị cụ thể. Xem định nghĩa đầy đủ

Từ trong ngày

từ điển dữ liệu

Từ điển dữ liệu là tập hợp các mô tả về đối tượng dữ liệu hoặc mục trong mô hình dữ liệu mà người lập trình và những người khác có thể tham khảo

JavaScript sẽ được gõ?

Javascript sẽ vẫn là ngôn ngữ được nhập động, nhưng nó sẽ chấp nhận khai báo kiểu nguyên bản . Thông số kỹ thuật này vẫn là giai đoạn 1, vì vậy nhiều thứ có thể thay đổi - nhưng đây là thời điểm thú vị để Javascript thực hiện bước đầu tiên trong một thế giới được gõ mạnh hơn.

JavaScript đã được nhập hay chưa được nhập?

JavaScript được coi là ngôn ngữ "được nhập yếu" hoặc "không được nhập" . Loại được đề cập ở đây là các loại dữ liệu—không liên quan gì đến việc nhập từ bàn phím của bạn.

Tại sao JS được gõ lỏng lẻo?

Tại sao JavaScript là ngôn ngữ lập trình được đánh máy yếu? . you do not have to specify the variable type in advance.

JavaScript không có loại?

JavaScript có bảy loại dựng sẵn. null , không xác định , boolean , số , chuỗi , đối tượng và ký hiệu. Chúng có thể được xác định bởi toán tử typeof. Biến không có loại nhưng giá trị trong biến thì có .

Chủ Đề