Chương 1: Hiểu về lập trình Quá trình dịch sẽ không tránh sai sót, vì vậy các bạn nào có phát hiện ra thì xin phản hồi giúp tôi, không thì kệ nó luôn :)) Tôi biết ban đầu sẽ có những đoạn tôi dịch khá lủng củng, nhưng tôi hứa sẽ dịch càng ngày càng dễ đọc hơn. Code Một chương trình, thường được gọi là source code hoặc code, là một tập hợp các hướng dẫn để yêu cầu máy tính cần xử lý một nhiệm vụ nào đó. Thông thường, code được lưu dưới dạng file văn bản, với js bạn có thể gõ code trực tiếp lên console của trình duyệt. Các nguyên tắc của một định dạng hợp lệ cùng sự kết hợp của các hướng dẫn được gọi là ngôn ngữ máy tính, hay còn gọi là cú pháp, tương tự như ngôn ngữ giao tiếp chỉ cho bạn cách đọc từ và các tạo ra câu đúng bằng cách sử dụng từ và dấu câu.
Các câu lệnh (Statements) Trong ngôn ngữ máy tính, một nhóm từ, số, cách thức thực thi từng nhiệm vụ cụ thể được gọi là câu lệnh. Trong JS, câu lệnh có thể như sau: a = b * 2; Ký tự a và b là các biến (variable), giống như những cái hộp, bạn có thể lưu trữ đồ vật trong đó. Trong lập trình, biến giữ giá trị (ví dụ số 42) được chương trình sử dụng. Về mặt tương phản, số 2 bản thân nó chỉ là một giá trị, được gọi là giá trị ký tự (literal value), vì nó độc lập và không lưu trữ trong một biến nào cả.
Dấu = và * là toán tử (operators) (xem "Toán tử") -- nó thực thi các hành động với giá trị và biến như sự phân công và phép toán nhân. Hầu hết câu lệnh trong JS kết thúc bằng dấu chấm phẩy (;) ở cuối câu. Lệnh a = b * 2; báo cho máy tính giá trị được lưu trữ trong biến b, nhân giá trị đó với 2, sau đó lưu kết quả lại vào một biến khác gọi là a. Lập trình tương tự như bộ sưu tập của nhiều câu lệnh cùng nhau mô tả tất cả các bước để thực thi mục đích lập trình.
Biểu thức (Expressions) Các câu lệnh được tạo thành từ một hay nhiều biểu thức. Một biểu thức là bất kỳ tham chiếu trên một biến hoặc một giá trị, hoặc tập hợp các giá trị và các biến kết hợp thành toán tử. Ví dụ: a = b * 2; Câu lệnh này có 4 biểu thức bên trong nó: ● 2 là giá trị biểu thức trực kiện. ● b là g iá trị biểu thức, có nghĩa là sẽ lấy giá trị hiện tại của nó ● b * 2 là biểu thức toán học, nghĩa là sẽ làm phép nhân ● a = b * 2 là một biểu thức gán, nghĩa là sẽ gán kết quả của biểu thức b * 2 cho biến a (còn tìm hiểu thêm sau) Một biểu thức chung đứng một mình còn được gọi là lệnh biểu thức(expression statement), như ví dụ sau: b * 2; Kiểu biểu thức này thường không hữu dụng, bởi nó chẳng có tác dụng nào đối với chương trình đang chạy — nó sẽ lấy giá trị của b và nhân nó với 2, nhưng sau đó không làm gì với kết quả đó.
Một loại câu lệnh biểu thức nữa là biểu thức lệnh gọi (call expression) (Xem “Functions”), khi toàn câu lệnh là một hàm tự gọi biểu thức: alert( a ); Thực thi chương trình Làm cách nào mà tập hợp các câu lệnh lập trình có thể yêu cầu máy tính phải làm gì? Chương trình cần được thực thi, hay còn được biết đến với tên chạy chương trình. Các lệnh giống như a = b * 2 rất hữu dụng cho lập trình viên đọc và viết, nhưng nó không hoàn toàn ở dạng để máy tính hiểu trực tiếp. Vì vậy, một trình tiện ích đặc biệt trong máy tính (hoặc là thông dịch-interpreter hoặc là biên dịch-compiler ) được sử dụng để dịch code bạn viết thành các lệnh mà máy tính có thể hiểu. Đối với một số ngôn ngữ máy tính, mỗi khi chương trình chạy thì bản dịch của các câu lệnh thường được hoàn thành từ trên xuống dưới, từng dòng một, nó thường được gọi là thông dịch mã.
Một số ngôn ngữ khác, bản dịch được hoàn thiện trước, gọi là biên dịch mã, rồi sau đó chương trình mới chạy, những gì đang chạy đã được biên dịch xong để cho máy sẵn sàng chạy. JavaScript thường được khẳng định nó là ngôn ngữ được thông dịch, bởi vì mã nguồn JavaScript được xử lý mỗi lần chạy. Nhưng điều đó không hoàn toàn chính xác, thực ra là JavaScript engine biên dịch chương trình và sau đó chạy ngay mã đã được biên dịch. Ghi chú: thông tin thêm về biên dịch JavaScript, xem 2 chương đầu của Phạm vi & Đóng kín trong seri này.
Tự luyện Chương này sẽ giới thiệu mỗi khái niệm lập trình với những mẫu code đơn giản, tất cả đều viết bằng JavaScript (đương nhiên!!!) Bạn cần luyện tập mỗi khái niệm bằng cách tự gõ code. Các dễ nhất là mở developer tool console trên trình duyệt. Mẹo: Thường thì bạn có thể mở developer console với phím tắt hoặc từ menu. Thông tin chi tiết về việc mở và sử dụng console trong trình duyệt ưa thích của bạn, xem “Mastering The Developer Tools Console”.
Để gõ nhiều dòng trên console cùng lúc, sử dụng <shift> + <enter> để chuyển sang dòng mới. Khi bạn nhấn <enter>, console sẽ chạy tất cả những gì bạn vừa viết. Hãy làm quen với việc chạy code trên console. Trước tiên, tôi đề nghị bạn mở 1 tab trống trên trình duyệt.
Tôi thích làm cách này bằng việc gõ about:blank trên thanh địa chỉ. Sau đó chỉ cần chắc chắn developer console được mở như chúng ta đã đề cập. Và giờ hãy gõ code này và xem chúng chạy: a = 21; b = a * 2; console.log( b ); Gõ những đoạn code trước trên Chrome console có thể tạo ra gì đó như: Hãy thử đi, đây là cách học code hay nhất để bắt đầu học lập trình đó! Output Trong mẫu code ở trên, chúng ta sử dụng console. Tóm lại, hãy nhìn vào những dòng code và xem nó là gì.
Bạn có thể đoán, nhưng chính xác làm sao chúng ta có thẻ print text (tức ouput cho người dùng) trên dev console. Có hai đặc tính mà chúng ta cần giải thích. Đầu tiên, phần log( b ) được đại diện như việc gọi hàm (xem "Functions"). Những gì xảy ra là chúng ta đang giao biến b cho hàm đó, hàm sẽ yêu cầu lấy giá trị của b và print nó lên console.
Thứ hai, phần console. làm một object tham chiếu nơi có hàmlog(. Chúng ta sẽ xem object và các thuộc tính của nó chi tiết hơn ở Chương 2. Cách khác để tạo ra output để bạn có thể nhìn nó chạy là alert(. Ví dụ: alert( b ); Nếu bạn chạy nó, bạn sẽ thấy rằng thay vì hiển thị output lên console, nó sẽ hiển thị một popup “OK” với nội dung của biến b.
Tuy nhiên, sử dụng console.) giúp cho việc học của bạn thuận tiện hơn nhiều so với alert(.), bởi vì bạn có thể output nhiều giá trị cùng lúc mà không bị phiền hà bởi trình duyệt. Với sách này thì chúng ta sẽ dùng console.) Input Khi chúng ta thảo luận về output, bạn cũng sẽ thắc mắc về input (ví dụ như nhận thông tin từ người dùng) Cách thông thường nhất là trang HTML hiển thị form cho người dùng có thể gõ vào, sau đó sử dụng js để đọc các giá trị vào các biến của chương trình. Nhưng có một cách đơn giản để lấy input để học và trình bày như bạn học theo sách này, đó là sử dụng function prompt(.) age = prompt( "Please tell me your age:" ); console.log( age ); Như bạn có thể đoán, mẩu tin bạn đưa vào prompt(.) -- trong trường hợp này, "Please tell me your age:" -- được in lên popup. Điều này cũng tương tự Khi bạn nhập input text bằng cách nhấp “OK”, bạn sẽ tuân theo giá trị mà bạn đã gõ được lưu trong biến age, cái mà chúng ta output với console.): Để giữ cho mọi thứ đơn giản trong quá trình chúng ta học lý thuyết lập trình cơ bản, các ví dụ trong sách này sẽ không cần input.
Nhưng giờ bạn đã biết cách sử dụng prompt(.), nếu bạn muốn thử thách bản thân, bạn có thể thử sử dụng input qua khám phá các ví dụ. Các biểu thức Toán tử là những gì chúng ta thực thi hành động trên các biến và các giá trị. Chúng ta đã thấy hai kiểu toán tử của JavaScript là = và * Toán tử * để thực hiện phép toán nhân. Dấu = được sử dụng để gán -- đầu tiên là ta tính toán giá trị ở phí bên phải(giá trị nguồn) dấu = và sau nó đặt nó vào biến(variable) mà chúng ta xác định ở phía bên trái (variable mục tiêu).
Chú ý: Có thể cảm giác hơi bị ngược bằng cách đảo trình tự gán. Thay vì a = 42, một số người thích lật ngược trình tự giá trị nguồn ở bên trái và biến mục tiêu ở bên phải, kiểu như 42 -> a (nó không phải JavaScript!). Không may,a = 42là định dạng được sắp xếp, và tương tự các biến, nó khá phổ biến trong các ngôn ngữ lập trình hiện đại. Nếu có cảm giác không tự nhiên, hãy bỏ chút thời gian để làm quen và tâm trí bạn sẽ tự sắp xếp nó.
Hãy xem: a = 2; b = a + 1; Tại đây, chúng ta gán giá trị2 cho biến a. Sau đó chúng ta có giá trị của biến a (vẫn là 2), thêm 1 vào nó sẽ có kết quả giá trị 3, sau đó lưu giá trị đó vào biến b. Trong khi biểu thức kỹ thuật, bạn cũng cần từ khoá var trong mọi thể loại lập trình, như cách đầu tiên bạn khai báo(aka khởi tạo) các biến (Xem "Variables") Bạn có thể luôn khai báo biến bằng tên trước khi sử dụng nó. Nhưng bạn cũng chỉ khai báo một biến một lần trong mỗi scope (xem “Scope”): nó có thể được sử dụng nhiều lần khi cần.
Ví dụ: var a = 20; a = a + 1; a = a * 2; console.log( a ); // 42 Sau đây là một số biểu thức trong JavaScript: ● Gán: = như a = 2. ● Tổ hợp gán: +=, -=, *=, và /= là các biểu thức tổ hợp mà nó kết hợp giữa toán với các giá trị gán, ví dụ như a += 2 (tương tự a = a + 2). ● Tiếp cận object:. Object là các giá trị chứa các giá trị khác tại các vị trí có tên cụ thể gọi là thuộc tính.a nghĩa là một giá trị object gọi obj với một đặc tính có tên a.
Các thuộc tính có thể chuyển đổi cách tiếp cận ví dụ obj["a"]. Xem chương 2.