Tại sao javascript là ngôn ngữ được gõ động?

chúng tôi hy vọng rằng bạn thích các sản phẩm được đề xuất của chúng tôi, chúng tôi có thể kiếm được một khoản hoa hồng nhỏ từ việc mua hàng bằng các liên kết liên kết của bạn và điều đó thực sự giúp chúng tôi tiếp tục làm tốt công việc

Mục lục

Javascript có rất nhiều tên mà hầu hết những người mới bắt đầu không biết tất cả những tên này có nghĩa là gì và một trong những tên này là động, bạn có thể đã nghe về nó trong một khóa học hoặc khi duyệt một số câu trả lời trên StackOverflow. vậy ngôn ngữ động có nghĩa là gì?

Tôi đã thực hiện một số nghiên cứu trên các diễn đàn và bài báo để tìm hiểu ý nghĩa của việc một ngôn ngữ lập trình được gọi là ngôn ngữ động.

Javascript được coi là một ngôn ngữ động, không phải vì kết quả bạn sẽ nhận được khi chạy mã trong trình duyệt, mà vì những gì bạn thấy khi phân tích mã trên giấy. lý do thực sự là Javascript đang sử dụng cấu trúc dữ liệu được nhập lỏng lẻo và điều đó có nghĩa là bạn có thể sử dụng bất kỳ khai báo nào [var, const, let] mà không cần chỉ định loại biến

ngược lại, có những ngôn ngữ tĩnh không được biên dịch thành mã có thể chạy được trừ khi bạn biết tất cả các loại giá trị, nếu chúng không được biết trước thì mã của bạn sẽ không được biên dịch

và vì Javascript sử dụng cấu trúc dữ liệu được nhập lỏng lẻo nên nó không giới hạn các biến trong phạm vi tĩnh, nhưng nếu bạn xem qua các ngôn ngữ khác như Flow, typeScript, Java, C, v.v., bạn sẽ thấy rằng các biến được nhập tĩnh

Nhân tiện, đừng nhầm lẫn giữa kiểu gõ động và kiểu gõ tĩnh với kiểu gõ mạnh và kiểu gõ yếu, đó là những tính năng khác giúp các ngôn ngữ lập trình lớp

điều đó có nghĩa là Javascript là một ngôn ngữ động

Tôi đã xem định nghĩa này khi thực hiện nghiên cứu cho chủ đề này, định nghĩa từ Wikipedia định nghĩa ngôn ngữ động với định nghĩa khoa học máy tính, nói rằng ngôn ngữ lập trình động là một lớp ngôn ngữ cấp cao, thay vì thực hiện các hành vi lập trình trong quá trình . và những hành vi này có thể là thêm mã mới, sửa đổi hệ thống loại hoặc mở rộng đối tượng

đây là một định nghĩa rất chung chung, tôi chỉ muốn bạn biết rằng nói chung, bây giờ hãy đi vào chi tiết thực sự giúp bạn thấy sự khác biệt giữa ngôn ngữ được nhập động và ngôn ngữ được nhập tĩnh

rất nhiều ngôn ngữ có hành vi năng động theo cách này hay cách khác. một số ngôn ngữ được nhập tĩnh cũng có thể có kiểu dữ liệu biến thể hoặc động chứa các kiểu dữ liệu khác nhau

nhưng câu hỏi đặt ra là tại sao những ngôn ngữ đó được gọi là ngôn ngữ được nhập tĩnh và javascript được gọi là ngôn ngữ được nhập động?

Sở dĩ Javascript được gọi như vậy bởi vì nó không chỉ có một số khía cạnh như các ngôn ngữ khác, hầu như nếu không muốn nói là tất cả đều là động

tất cả các biến Javascript đều tồn tại và loại động, thậm chí toàn bộ mã là động vì bạn có thể chỉnh sửa mọi thứ trong thời gian chạy mà không gặp lỗi nào, ví dụ: tạo các biến mới và để Javascript xác định loại của chúng trong thời gian chạy, tạo các hàm hoặc thay thế các biến hiện có . Mã Javascript được thêm vào khi có nhiều tập lệnh được tải trong trình duyệt và tải nhiều tệp hơn bất cứ lúc nào bạn muốn

ngày nay mã tĩnh được tạo trong nền cũng như các loại tĩnh và Javascript được biên dịch trong nhiều triển khai. nhưng hành vi vẫn là một hành vi động, chỉ khi các khía cạnh động không được sử dụng cho một đối tượng nhất định, trình biên dịch mới tạo ra các kiểu tĩnh

với Javascript được nhập động là Cách được xác định rõ ràng nhất trong đó Javascript là động. các kiểu dữ liệu tồn tại trong ngôn ngữ nhưng không bao giờ kiểm tra xem các kiểu của chương trình có ổn không cho đến khi nó thực sự chạy. như chúng tôi đã nói trước đó, đối lập với kiểu gõ động là kiểu gõ tĩnh, vì bạn có thể nghĩ rằng các kiểu chương trình được xác minh bằng cách kiểm tra mã nguồn của chúng trước khi chạy. một số ngôn ngữ được gõ tĩnh đó sẽ là Java và ML

GHI CHÚ. Hầu hết các ngôn ngữ động cũng được nhập động, nhưng không phải tất cả các ngôn ngữ. Các ngôn ngữ lập trình động thường được gọi là ngôn ngữ kịch bản [ví dụ:. javascript], mặc dù thuật ngữ này theo nghĩa hẹp nhất đề cập đến các ngôn ngữ dành riêng cho môi trường thời gian chạy nhất định

đây là một ví dụ về những gì làm cho Javascript năng động

Tôi đã hỏi những loại câu hỏi này và tôi đã kiểm tra rất nhiều bài viết và câu trả lời trên các diễn đàn cho đến khi tôi tìm thấy bài viết có ví dụ thì tôi sẽ đọc qua, tôi biết có bao nhiêu ví dụ quan trọng, đặc biệt là khi xử lý mã

để tôi chỉ cho bạn một ví dụ về điều khiến Javascript trở thành một ngôn ngữ động

  var myString = 'I am a string';
  myString  = 1; // assign an integer to myString
  console.log[myString]; // 1 is loged to the console

Biến myString là một chuỗi trước khi tôi gán số nguyên 1 cho nó, nhưng sau đó nó chuyển sang số nguyên khi tôi gán

bạn coppy code chạy trên trình duyệt rồi mở console lên [đa số trình duyệt dùng F12] sẽ thấy không có lỗi gì mặc dù mình đã đổi kiểu biến bằng cách gán số nguyên cho chuỗi . đó là điều tôi muốn nói khi nói về việc thay đổi loại biến trong thời gian thực hiện

Vì vậy, điều thực sự làm cho Javascript được nhập động là có thể thay đổi loại biến hoặc hàm trong quá trình thực thi mà không gây ra bất kỳ lỗi nào xuất hiện trong bảng điều khiển hoặc ngăn tập lệnh hoạt động tốt

bạn có thể nghĩ rằng đó là một điều thực sự tốt, vì không có lỗi nào xuất hiện, đó cũng có thể là điều tốt và điều xấu. hành vi cụ thể này không chỉ có lợi mà còn có một số nhược điểm, đó là lý do tại sao tôi khuyên bạn nên tìm hiểu sâu hơn nếu bạn muốn hiểu thật rõ về ngôn ngữ lập trình của mình

Tôi sẽ dừng ở đây vì đây không phải là chủ đề của chúng ta, hãy nói một chút về sự khác biệt giữa ngôn ngữ được nhập động và ngôn ngữ được nhập tĩnh

gõ động so với gõ tĩnh

khi viết tập lệnh chuyển đổi, bạn thực sự nên biết về sự khác biệt giữa gõ động và gõ tĩnh, nhưng đừng lo lắng chỉ có hai điểm khác biệt

điều đầu tiên mà bạn đã biết là các ngôn ngữ được nhập động [Javascript] không thực hiện kiểm tra kiểu cho đến thời điểm thực thi trong khi các ngôn ngữ được nhập tĩnh thực hiện kiểm tra kiểu tại thời điểm biên dịch. và điều đó có nghĩa là khi bạn viết một tập lệnh bằng ngôn ngữ được nhập động, chẳng hạn như Groovy, mã sẽ được biên dịch ngay cả khi nó chứa một số lỗi loại biến và nó sẽ chạy bình thường

ví dụ: nếu mã của bạn được viết bằng ngôn ngữ được nhập tĩnh chẳng hạn như Java và có lỗi, thì mã đó sẽ không được biên dịch cho đến khi bạn sửa lỗi đó. một điều nữa là các ngôn ngữ được nhập tĩnh yêu cầu loại dữ liệu của các biến của bạn phải được khai báo trước khi bạn có thể sử dụng chúng, trong khi không có hạn chế nào như vậy trong các ngôn ngữ được nhập động, đây là hai ví dụ về điều này

    // here is a statically-typed example written in Java
    int n;
    n = 5;
    // here is a dynamically-typed example written in Java
    n = 5

cả hai đều đang làm cùng một công việc đó là tạo một biến num và gán số 5 làm giá trị của nó, như bạn thấy có sự khác biệt giữa hai biến nằm dưới dòng đầu tiên trong mã Java, int num, xác định dữ liệu . vì vậy, nó mong muốn các biến của nó được khai báo kiểu trước khi gán giá trị cho chúng. Mặt khác, Groovy được nhập động nên nó xác định kiểu dữ liệu của các biến dựa trên các giá trị bạn gán cho chúng, vì vậy nó không yêu cầu khai báo kiểu. đó là lý do tại sao các ngôn ngữ được nhập động dễ học hơn một chút và chúng giúp bạn tiết kiệm rất nhiều thời gian và không gian

nói về sự dễ dàng của một ngôn ngữ, đây là một chủ đề mà tôi nói về javascript có phải là một ngôn ngữ dễ học không?

    // here is an example in Groovy
    number = 5
    numbre= [number + 15] / 2  // there is a typo in number when reassigning

Tôi đã viết mã này để cho bạn thấy một vấn đề phổ biến mà mọi người gặp phải khi học một ngôn ngữ được nhập động, đó là lỗi đánh máy trong tên của biến nếu bạn chưa nhận ra. mặc dù nó dễ học và gỡ lỗi nhưng nó có thể dẫn đến một số vấn đề như thế này. nó có thể không hiển thị bất kỳ lỗi nào vì numbr không cần phải khai báo với kiểu dữ liệu đằng sau nó

nhưng khi bạn cố gắng thực hiện một số phép tính với

    // here is a statically-typed example written in Java
    int n;
    n = 5;
0, giả sử rằng phép tính đầu tiên
    // here is a statically-typed example written in Java
    int n;
    n = 5;
0 được lưu vào
    // here is a statically-typed example written in Java
    int n;
    n = 5;
0, bạn sẽ thực sự gặp khó khăn trong việc tìm ra con số kỳ lạ đó đến từ đâu. nhưng khi sử dụng ngôn ngữ được nhập tĩnh, nó sẽ cho bạn biết rằng số đó không được xác định và giúp bạn đỡ đau đầu

Vì vậy, bây giờ bạn đã biết ngôn ngữ được nhập động là gì và nó khác với ngôn ngữ được nhập tĩnh như thế nào và bạn biết về hai khái niệm này, bạn có thể nhận ra khá nhiều sự khác biệt giữa một số ngôn ngữ vì bạn dễ dàng phân loại hai loại ngôn ngữ này.

lấy đi

bạn đã có nó, bạn đã có tất cả thông tin bạn cần về chủ đề này và bạn đã tìm thấy câu trả lời cho câu hỏi của mình, đó là lý do tại sao javascript được gọi là ngôn ngữ được nhập động hoặc ngôn ngữ động. và điều quan trọng nhất là bạn biết ý nghĩa của ngôn ngữ được gõ động

Tôi nghĩ câu hỏi hay hơn sẽ là kiểu gõ động có nghĩa là gì và nếu Javascript cũng được coi là ngôn ngữ động, thì câu trả lời sẽ là có Javascript là ngôn ngữ kiểu động/kiểu động vì nó không kiểm tra loại biến cho đến khi nó

Tại sao ngôn ngữ được gõ động?

Một ngôn ngữ được nhập động nếu loại được liên kết với các giá trị thời gian chạy và không được đặt tên biến/trường/v.v. . Điều này có nghĩa là bạn với tư cách là một lập trình viên có thể viết nhanh hơn một chút vì bạn không phải chỉ định các loại mỗi lần [trừ khi sử dụng ngôn ngữ được nhập tĩnh với suy luận kiểu].

JavaScript có phải là ngôn ngữ động không?

Bởi vì JavaScript là ngôn ngữ được nhập động , bạn có thể khai báo các biến, hàm, đối tượng và bất kỳ thứ gì mà không cần khai báo loại.

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

JavaScript là ngôn ngữ được nhập động nhưng TypeScript là ngôn ngữ được nhập tĩnh. câu trả lời dài hơn. Trong các ngôn ngữ được nhập động, tất cả các kiểm tra loại được thực hiện trong thời gian chạy, chỉ khi chương trình của bạn đang thực thi. Vì vậy, điều này có nghĩa là bạn chỉ cần gán bất cứ thứ gì bạn muốn cho biến và nó sẽ hoạt động.

Chủ Đề