Vòng lặp trong JavaScript và sự thấu hiểu phụ nữ.

I. Lời mở

Có người nói rằng Code cũng như một người con gái vậy, đôi khi họ là tuýp người nóng nảy breakpoint hiện đầy trên trán, họ có thể đưa ra những lời nóng nảy mà chảy ra bug;  có lúc họ lại hiền hòa, êm dịu biết chiều lòng người. Dù là tuýp người nào thì việc khởi đầu và tiếp cận với một người phụ nữ là khó, không phải ai cũng làm được. Một lập trình viên một khi đã làm chủ được những dòng code, họ hiểu được mình đang kiến tạo những gì, họ biết vấn đề cần giải quyết ở đâu, họ nâng lên được thì họ có thể đặt xuống được. Vì vậy qua bài viết này, mình mong mọi người sẽ có một cái nhìn mới mẻ về hành trình code dạo của một lập trình viên cũng như tích lũy thêm hành trang để có thể chinh phục cô nàng thú vị JavaScript này nha. 

Chủ đề của hôm nay đó là: vòng lặp.

II. Hiểu nàng

Đầu tiên bản thân chúng ta phải thể hiện được sự quan tâm, thể hiện được thành ý của mình với nàng. Bạn chào buổi sáng hàng ngày, bạn nhắn tin chúc ngủ ngon mỗi tối. Bạn, chính bạn đang nằm trong một vòng lặp hàng ngày do chính bạn tạo ra. JS cũng có những vòng lặp, vòng lặp sinh ra là để giúp chúng ta thực hiện những thao tác lặp lại mà không phải viết nhiều dòng mã cồng kềnh. Những dòng mã cồng kềnh sẽ khó để thấu hiểu, khó để chỉnh sửa hệt như phụ nữ vậy. Và tất nhiên bất kì một hành động gì trong nhân gian đều là điều kiện ảnh hưởng lẫn nhau, tác động đến hành động lặp của bạn. Khi chúng ta kiến trúc một vòng lặp, bạn cần phải lưu ý đến điều kiện của vòng lặp (thứ tác động đến hành động lặp). Các vòng lặp sẽ dừng lại hay chuyển hướng gọi hàm khác khi đáp ứng đủ điều kiện mà bạn đưa ra.

Ảnh minh họa
Ví dụ: khi bạn có một loạt các ý tưởng để mở lời tại sao không thử hết các trường hợp.

Ảnh minh họa
Và ta được kết quả như sau

Như bạn thấy đấy thay vì bạn phải mất thời gian nhập từng dòng tin nhắn thì bạn chỉ cần có một vòng for() việc viết 1 lúc nhiều tin nhắn sẽ dễ dàng hơn. Đó chính là ý nghĩa của vòng lặp trong JS.
Vòng lặp trong JS có thể chia làm 2 dạng được dùng rộng rãi: vòng lặp for() và vòng lặp while()
for() sẽ hữu dụng khi bạn muốn chạy những cụm mã nhiều lần với những giá trị khác nhau cho mỗi lần. Như ở ví dụ trên mỗi lần mình lặp lại là một giá trị khác của tin nhắn.

  • Vòng lặp for() sẽ bao gồm những dạng:
    • for lặp lại hành động nhiều lần.
    • for/in lặp lại hành động theo các thuộc tính (properties) của đối tượng (object).
    • for/of lặp lại hành động thông qua các giá trị của một đối tượng (object).

while() sẽ hữu dụng khi bạn muốn chạy những cụm mã trong khi điều kiện bên trong ngoặc vẫn đúng.

Ảnh minh họa
Điều kiện trong ngoặc được đưa ra là (i<4) miễn là khi (i<4) việc lặp vẫn được tiếp tục và ta sẽ được kết quả:
Ảnh minh họa
  • while() sẽ bao gồm những dạng sau:
  • while và do/while lặp lại hành động trong khi điều kiện đưa ra vẫn đúng.

III. Hành động tốt

Một khi bạn đã nắm bắt được rằng: “ À thì ra JS có vòng lặp, mục đích của vòng lặp sinh ra để làm gì, có những vòng lặp nào” thì  bạn đã qua giai đoạn hiểu nàng. Tiếp tới, dựa vào những gì chúng ta biết được mà tấn công thể hiện bản thân thôi.

A. Hành động tốt For()

Ảnh minh họa
  1. Statement 1: được thực hiện một lần duy nhất khi bắt đầu vòng lặp. 
  2. Statement 2: xác định điều kiện để thực thi việc lặp. Đây sẽ là chốt chặn để việc lặp có được tiếp tục hay không.
  3. Statement 3: được thực thi mọi lúc trong suốt vòng lặp.
Ảnh minh họa
Bạn hãy thử test để biết kết quả xem!!!

Ví dụ: để in ra nỗi niềm tâm tư như ví dụ trước bạn có thể dùng for thay vì while: với Statement 1 thiết lập giá trị đầu cho i trước vòng lặp và chỉ thực hiện 1 lần duy nhất.
– Statement 2 xác định điều kiện để vòng lặp hành động. Khi tình yêu chưa tới được 3000.
– Statement 3 tăng giá trị tình yêu lên 1000 sau mỗi vòng lặp cho đến khi tình yêu của bạn đủ 3000.

Một vài chú ý cho hành động tốt for() mà mình nghĩ bạn nên biết:
– Statement 1 có thể có hoặc không, công nàng JS này không quan tâm điều kiện ban đầu của bạn là gì, chỉ cần bạn biết nắm bắt thời cơ ghi điểm là ok. Thay vì khai báo i = 0; bạn có thể khai báo từ ban đầu khi khởi tạo: var i = 0; thế là ta bỏ qua được Statement 1 rồi. 

Ảnh minh họa


– Statement 2 dùng để đánh giá biến điều kiện mà bạn đã khởi tạo để quyết định dừng vòng lặp hay không. Statement 2 cũng có thể có hoặc không, nếu bạn không muốn để Statement 2 thì bạn có thể sử dụng câu lệnh điều kiện (if/then/else) và break; để dừng vòng lặp đúng lúc. Nếu không có lệnh dừng thì vòng lặp sẽ là vô hạn, ảnh hưởng xấu tới browser cũng như là mã lệnh của bạn. Không cô gái nào thích những chàng trai nói liên tục mà!!
– Statement 3 có thể có hoặc không, nó cũng dùng để cài đặt giá trị sau mỗi lần lặp cho biến điều kiện. Bạn có thể cài đặt giá trị cho biến i ở bên trong vòng for() thay cho Statement 3.
– Tuy nhiên dù là trường hợp nào thì vòng lặp for() cần ít nhất một Statement trong 3 Statement. Một vòng lặp for() không có Statement là một vòng lặp vô nghĩa và không chạy được.

Ảnh minh họa
↦ tình yêu này sẽ không đi về đâu!!

B. Hành động tốt for/in

Khi được bạn tiếp cận, người phụ nữ sẽ có những cái nhìn tổng thể về bạn qua đánh giá, con gái thường yêu bằng mắt mà. Ví dụ cô nàng này đã đưa ra các đánh giá bên ngoài về anh Đạt và liệt kê lại.

Ảnh minh họa
Ảnh minh họa
Và đây là kết quả sau khi chạy mã.

for/in sử dụng để lặp lại/ sử dụng các thuộc tính trong một đối tượng lần lượt. Bạn nên dùng for/in khi muốn gọi ra các thuộc tính(properties) của một đối tượng (Object) mà không phải gọi từng thuộc tính một bằng cách Object[properties]. Như ở trên anh Đạt có những đặc điểm: Tên, tuổi, số đo 4 vòng.

C. Hành động tốt for/of

  1. Cô gái bạn chọn có một list anh trai mưa mà bạn cần phải biết tên và làm thân.
Ảnh minh họa
Đối tượng được dùng cho for/in có thể là một mảng(Array), một xâu(String), Maps, NodeList,….
Vòng lặp này sẽ có ích cho việc liệt kê từng phần tử của một đối tượng.
Và đây là kết quả thu được.

D. Hành động tốt while và hành động tốt do/while

Cả hai hành động tốt này đều có kiểu cấu trúc giống nhau:

Ảnh minh họa
While()
Ảnh minh họa
do while()

Chú ý rằng condition bên trong dấu ngoặc là không thể không có vì nó là điều kiện để vòng lặp chạy.
Điều khác biệt duy nhất giữa 2 hành động tốt này đó chính là:
– Với vòng lặp while() mã lệnh sẽ được thực hiện sau khi điều kiện đưa ra được thỏa mãn.
– Với vòng lặp do/while() mã lệnh sẽ thực hiện một lần trước khi kiểm tra. Có nghĩa là khi điều kiện trả về trong condition là false đoạn mã lệnh bên trong do{} vẫn có thể chạy ít nhất 1 lần nữa trước khi vòng lặp được dừng. Như khi cô nàng này muốn dừng cuộc nói chuyện mà bạn vẫn cố gắng nhắn nốt dòng tin cuối. Trong vài trường hợp thì điều này là không cần thiết và có thể khiến kết quả đưa ra không như ý.
Để minh họa cho sự khác nhau này mình xin đưa ra ví dụ sau:

Ảnh minh họa
Ở đây mình khởi tạo i = 1 và in ra màn hình và tăng giá trị sau mỗi lần lặp
Ảnh minh họa
Và kết quả in ra được 9 số từ 1 tới 9.

Còn nếu sử dụng do/while() với mục đích tương tự:

Ảnh minh họa

Kết quả thu được sau khi dùng vòng lặp do while là:

Ảnh minh họa

Đó, trước khi điều kiện (i<10) được trả về false thì phần mã trong thân vòng lặp đã được thực hiện và in ra The number is 10. 
Gợi ý của mình đưa ra là tùy vào trường hợp xử lý điều kiện các bạn nên chọn cho mình vòng lặp phù hợp nhất. Phải có lúc nhu có lúc cương thì đại nghiệp mới có thể thành công.

IV. Lời kết

Và đó là những gì mình có thể đem tới cho các bạn trong lần này. Mong rằng qua bài này các bạn sẽ hiểu rằng vòng lặp sinh ra với mục đích thực hiện những công việc cần lặp lại nhiều lần dễ dàng hơn. Cùng với đó là biết cách lựa chọn những vòng lặp cho mình vào từng trường hợp để tối ưu hóa kết quả mong muốn.
Câu cuối dành cho các bạn, trong những kì quan trên thế giới, phụ nữ là điều khó nắm bắt nhất, khó để thấu hiểu nhất vì vậy những lập trình viên như chúng ta cần phải chăm chỉ mày mò tìm hiểu, cần phải kiên trì thì mới đơm được trái ngọt cuối cùng.