Cái sự khù khoằm của Javascript

Haizz sau những ngày dài dằng dặc trôi qua từ bài viết trước đến giờ chắc cũng đã 2 tuần đến nơi rồi mà mình không viết nổi 1 bài mới nào chắc anh em khắp nơi cũng lo lắng lắm nhỉ .Mọi người chắc đang vướng mắc lẫn hồ nghi rằng “Anh em có việc gì mà lâu không thấy xuất hiện”, “Chắc anh ấy đang ốm nên không viết tiếp đó” hay thì “Có lẽ anh ấy đang mải mê yêu đương gì chăng”. Vâng tất cả đều sai hết thưa quý vị! Anh ấy đang bận chết mẹ luôn, đi làm chỗ mới cấm rảnh cho anh ấy phút giây nào nên anh ấy không còn thời gian để ngồi lại bình tâm suy nghĩ viết cái gì nữa. Mong mọi người thông cảm cho anh ấy. Mãi đến hôm nay mới có chút thời gian để tiếp tục sự nghiệp của 1 writter đây :)) Trong thời gian ở ẩn thì anh ấy có học được chút ít về Javascript do vậy nay anh ấy sẽ có đôi lời phát biểu về cái thứ ngôn ngữ đang làm mưa làm gió trên thị trường hiện này

JS là chi?

Nhắc đến Javascript thì anh em trong giới đồng đạo làm Web chắc không ai là không biết đến rồi phải không? Chính vì thế có lẽ mình sẽ chả phải nói nhiều về sự tích ra đời hay nguồn dẫn tiểu sử của nó thay vào đó là sẽ tóm gọn lại trong vài câu ngắn ngủi thôi. :3 Javascript đơn giản chỉ là 1 ngôn ngữ lập trình phía client để giúp cho mấy cái web HTML của chúng ta đẹp đẽ ngon lành, ấn cái lọ ra cái chai, ấn cái chai ra cái can mà ấn cái can lại ra cái xô; nhưng giờ thì nó được mấy ông tướng xách lên server, code cả server thông qua nền tảng của Google mang tên NodeJS, rồi còn nghe nói định mang xuống cả Assembly gì gì đó. Nói chung là bây giờ thì nó code được everywhere ảo ơi là ảo

Mình trước đây thì chỉ chủ yếu là code C#, dạo này thì có code Java lẫn Python để nghịch chút ít mấy thứ vớ vỉn mà cứ hay đưa lên trên blog này đó nhưng mà từ hồi đi làm chỗ mới thì tuyệt nhiên được làm quen với Javascript chính gốc. Trước gọi là có code tí thôi chứ chả đả động gì nhiều; còn bây giờ thì nhìn đâu cũng là những file .js. Tính ra sau gần 1 tháng code cái này thì mình xin có đôi điều chia sẻ đối với anh em chưa code javascript bao giờ về những cái khù khoằm, oái oăm của Javascript mà mình éo thể chịu nổi :))

Những thứ dở hơi của JS

Thứ nhất là js là 1 ngôn ngữ dynamic nền mọi thứ đối với javascript đều được coi như là object . Int, string hay cái của mẹ gì trong Javascript cũng đều được coi là object tuốt ngay cả fuction cũng được coi là object tuốt.Mọi thứ trong JS thì đều được kế thừa từ 1 object nguyên thủy thiên tôn Object.prototype. Chính vì vậy là từ kiểu dữ liệu là a rồi mình gán nó sang kiểu dữ liệu b nó vẫn cứ làm được mà không lỗi lầm gì nữa chứ.  Ví như đang a = 0; rồi sau đó a = “Tôi là javascript” cũng không hề hấn gì luôn  (Hiện tại để tránh sự dở hơi khi ép kiểu tràn lan của Javascript thì bên Mai cờ rô sốc có đưa ra 1 thứ gọi là TypeScript lai giữa C# và Javascript để giải quyết cái bài toán trên)

Thứ 2 là Javascript có thể khai báo mọi thứ ở bất kì nơi đâu trong code mà không có 1 sự hạn chế nào cả. Bình thường đối với C# hay Java thì khi khai báo phải ghi rõ kiểu giá trị gì gì đó thì với JS thì không. Anh em có thể trong code ghi a = 0; luôn. Ghi ở đâu cũng được ấy chứ ví như đầu file, cuối file, trong function hay thậm chí cả 3 chỗ luôn nó cũng chả chết =))   Sao lại có sự ảo diệu thế cơ chứ 😐 Ví như mình có 1 file Js như sau

a = 0

function Sample(){

a = 0

}

Đấy nhìn thấy chưa. Hiểu được tuốt luôn :)) Chưa kể là với anh em không biết thì a trong với a ngoài thậm chí chả phải là 1 đâu. Khác nhau đấy ;)). Vấn đề này trong JS được biết với định nghĩa Scope và Closure, rất chi là khó hiểu đổi với những người mới như mình; mục đích của 2 cái này là để giải quyết cái sự vụ nghiêm trọng do việc khai báo linh tinh được của javascript đó :)). Anh em đọc thêm trong link này này http://ktmt.github.io/blog/2013/05/12/closure-va-scope-cua-javascript/

Tiếp theo 1 cái mà mình cũng đang có bực tức với javascript đó chính là callback. Vì bản chất của JS đó là asynchoronous (bất đồng bộ) nên khi gọi hàm để thực thi cái của nợ gì đó thì đều cần truyền 1 function (được gọi là callback) để hứng lại cái kết quả sau khi mà hàm chính thực hiện sau. Nói đến đây có lẽ anh em bắt đầu tưởng tượng ra được trong đầu 1 cái hình ảnh là nếu mình có hàm A gọi hàm B gọi hàm C rồi gọi hàm D thì không biết nó sẽ ra cái quái gì nữa. Vâng cái này được gọi là Callback hell( địa ngục Callback) :v

DEg3cPZ - Imgur.png

Anh em có thể nhìn cái ảnh dưới để hình dung này

Nhìn thôi cũng đã thấy khiếp sợ rồi đúng không :)) Để khắc phục cái này thì các bố làm JS lại nghĩ ra cái Promise (hứa hẹn) để khắc phục cái tình trạng call với chả back của JS đây. Anh em nào muốn ngự làm thì có thể đọc thêm ở https://kipalog.com/posts/Promise-la-khi-gi-

Cái cuối cùng đó là việc debug rồi IntelliSence cho thằng JS thật sự là rất tệ nữa chứ :(( Ngồi code với nó cứ như là code bằng Notepad ấy. Chả được gợi ý mịa gì cả 😐 Làm bực mình không thể tả được. Code kiểu gì toàn dùng Ctrl + F để tìm hàm gọi nhau chứ chả biết nó nằm ở đâu. Đặt tên hàm mà không chuẩn thì 2 cái nó giống nhau tên nhau về sau nó chết lăn đùng ra nữa cơ. Mệt mỏi lắm.

Kết

Đấy là toàn bộ những gì đang diễn ra với mình trong những tuần vừa qua đó. Được làm quen với JS thật sự cũng có cái hay cũng như cái dở riêng nên thôi anh em hãy như mình cố gắng lên là được. Đằng nào thì cũng phải học nó thôi mà vì giờ đây “Nơi nào có anh” chính là cả thế giới mất rồi :v

 

Advertisements

4 thoughts on “Cái sự khù khoằm của Javascript

    • từ từ mới thẩm thấu được bác ạ. hay ho mà toàn phải đưa ra các phương án thay thế à :))

      Like

  1. Haha, hiểu hoàn cảnh của thánh. Mình trước chỉ làm server (Java) nên khi động đến thằng JS thấy cũng khá lạ lẫm. Nhưng làm một thời gian thì thấy khá là hay. Hiện tại mình cũng chưa biết có tool nào hỗ trợ autocomplete cho JS, mình toàn xài trên console của chrome 😀

    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s