Phát triển Java 2.0: JavaScript dành cho các nhà phát
triển Java
Tại sao JavaScript lại trở nên quan trng
JavaScript được Netscape giới thiệu vào năm 1995 và nó nhanh chóng được công chúng yêu
tch. Lý do có liên quan nhiều đến sự xuất hin của các trang web như là một nền tảng môi
trường truyền thông thương mi: Với JavaScript, bạn thể tác động đến hành vi của trang web
trong tnh duyệt bằng lập trình. Ch điều đó thôi cũng đã thú v rồi! Việc xác nhận hợp lệ của
dạng HTML và mánh khóe hình ảnh hạn chế đã là vấn đề quan trọng hàng đầu.
K từ đó, JavaScript đã trải qua mt vài thay đi. Vào lúc đó Netscape đã có một sản phm là
Netscape Application Server (Máy chủ ứng dụng Netscape), dựa trên JavaScript phía máy chủ để
xây dng các ứng dụng web. Vài năm sau đó, sự ra đời của Ajax và các thư viện tin ích như
JQuery, Prototype và ExtJS đã tiếp tục châm ngòi cho các mi quan tâm về JavaScript. Gần đây
hơn, JavaScript phía máy chủ đã trở li với Node.js, mt framework I/O dựa trên sự kiện dùng để
xây dng các ứng dụng web phía máy chủ bng cách sử dụng công cụ V8 JavaScript của Google.
Để chăm lo cho tương lai của sản phẩm của mình, Netscape đã gửi JavaScript lên t chức quốc tế
v tiêu chun hóa Ecma. Đó là lý do tại sao mt số người gọi JavaScript là ECMAScript. Quan
trọng hơn, đó là lý do tại sao hầu hết các trình duyệt web đều hỗ trợ ECMAScript. Kết quả là,
các ứng dụng web gặp khó khăn đều không sử dụng JavaScript ở đâu đó và JavaScript dường
như không thể thay đổi được điều đó. Hiện tại chưa có ngôn ngtạo kịch bản lnh nào khác
tương tch trình duyt xuất hiện.
Node.js
Node.js (xem phần i nguyên) là mt framework ở phía máy chủ, nó dựa trên sự kin, tính
đồng thời rất cao. Các chương trình Node.js m rộng quy mô hiệu quả hơn nhiều so với các
chương trình các lung, trong khi giải quyết rất nhiều về các vấn đề liên quan đến lập trình
đồng thời. Trong khi Node.js còn tương đối mới, s đổi mới xung quanh nó khá thú vị. Hiểu biết
JavaScript là chìa khóa để truy cập vào hcác công cụ đang phát trin có liên quan đến Node.js.
Ngày nay, mặc dù tiếng xấu của nó vẫn còn sót lại, nhưng JavaScript được cho là mt trong
những ngôn ngữ được sử dụng nhiều nhất (và có ích) trên hành tinh. Nếu bạn là mt lập trình
viên Java (hoặc một lập trình viên Ruby, Python hay PHP), có thể là bạn hoặc đã sử dụng
JavaScript hoặc bạn sẽ sử dụng trong tương lai không xa. Việc hiểu biết mt s tính năng của
JavaScript có thể giúp bạn xây dựng các ứng dụng web phổ biến hơn tiếp theo. Hơn nữa, nó sẽ
cho phép bạn sử dụng Node.js và thậm c mở mang hiu biết của bạn về những gì đang xảy ra
trong lúc triển khai bên dưới mt sản phẩm trong GWT.
Trong các phần tiếp theo, i sẽ tập trung vào các phần tử chính của cú pháp JavaScript, nêu bật
các chuyến đi và các chỗ rẽ nh đặc biệt có thể gây ngạc nhiên hoặc tch thú cho các nhà phát
trin Java. Tuy nhiên, đầu tiên, tôi mun xua tan một trong những lầm tưởng phổ biến về
JavaScript: đó là bạn cần mt trang web để tương tác với JavaScript.
Về đầu trang
Sử dụng JavaScript trong Chrome
Vmặt lịch sử, để chạy được JavaScript, nó đòi hỏi phải một trình duyệt và mt trang web
gián tiếp. Đối với mt số nhà phát triển điều đó đã gây ra phiền toái và thậm chí trở ngại. May
mắn thay, các trình duyệt đã phát triển; ngày nay cả Firefox lẫn Chrome đều cung cấp các IDE
để chạy JavaScript.
i tch giao diện điều khiển JavaScript tin lợi của Chrome để theo đuổi ngôn ngữ này. Ging
như trình shell của Python hoặc IRB của Ruby, Chrome cung cấp mt môi trường tương tác để
tìm hiểu JavaScript mà không cần dùng một trang web nào.
CoffeeScript
Nếu bạn thích những gì JavaScript có thể làm nhưng không thích cú pháp của nó, bạn nên xem
t CoffeeScript. CoffeeScript là "ngôn ngnhbé dùng để biên dch thành JavaScript" —
nghĩa là, CoffeeScript làm cho việc lập trình JavaScript tr nên dễ dàng hơn bằng cách nới lng
mt số cú pháp của nó. Về nhiều mặt, CoffeeScriptcảm giác giống nhiều hơn với Ruby hay
Python nhưng lại tạo ra mt sự tương đương mt-mt với JavaScript. Xem phần i nguyên để
tìm hiểu thêm về CoffeeScript.
Để bắt đầu với giao diện điều khiển JavaScript của Chrome, bạn cần tải về bản Chrome phù hợp
với hệ điều hành bạn đang dùng. Tiếp theo, mở mt tab mi và chọn View > Developer >
JavaScript Console (giao din lập trình JavaScript). Ở dưới cùng của cửa sổ Chrome của mình,
bạn sẽ thấy giao din lập trình của nhà pt triển JavaScript hiện ra. Bạn có thể làm cho cửa sổ
này trở thành mt hộp thoại độc lập bằng cách chọn biểu tượng Undock ở góc dưới cùng bên trái
của giao diện bàn điều khiển. Sau đó, bạn thể chọn biểu tượng Console ở góc trên bên phải
của hộp thoại để nhận được mt cửa s rỗng đơn giản dùng cho việc tương tác với JavaScript,
như thể hiện trong Hình 1:
Hình 1. Tương tác với JavaScript trong Google Chrome
Bây gi chúng ta hãy xem xét mt số cú pháp.
Về đầu trang
Các biến JavaScript
JavaScript là một ngôn ngữ khá dễ chịu, ở chỗ nó cho phép bạn tạo ra một vài lỗi lập trình vẫn
tải trang web. Các phần tử JavaScript thường hỏng thầm lặng, chủ yếu đó là các tin tức tốt lành.
Trang Web ban đầu sẽ vẫn còn thô nếu việc lập trình JavaScript cẩu thả cấm các trang được load.
Điều đó nói rằng, khi chúng ta dựa vào JavaScript để làm những điều khác thường hơn (như việc
cập nhật trạng thái trang không đồng b), việc tạo mã JavaScrip không cn thận sẽ gây ra nhiều
vấn đề. Vì lý do này mà các nhà phát trin Java nên dành thời gian để hiểu mt số khía cạnh nhất
định về cú pháp của JavaScript.
Vic xử lý các biến của JavaScript đặc biệt quan trọng và cn hiểu rõ. Ví dụ, bạn thể định
nghĩa một biến có tên là foo chẳng hạn hoặc trực tiếp hoặc thông qua việc khai báo var, như
trong Liệt kê 1:
Liệt kê 1. Biến foo
foo = 'foo'
var bar = 'bar'
Biến foo trong Lit kê 1 là một biến hợp lệ trong JavaScript. Nhưng vì nó thiếu một khai báo
var, nên là một biến toàn cục. Do đó cần xem xét cẩn thận các biến được định nghĩa với var
(ví dụ, trong hàm định nghĩa các biến trong đó).
Nói chung, không nên dùng các biến toàn cục. Vì chúng có thể dễ dàng được truy cập và thay
đổi ở bất cứ đâu trong ứng dụng JavaScript, nên việc sử dụng chúng có thể dẫn đến lỗi mà ta
không hay biết. Vì vậy, khi bạn lập trình JavaScript, đừng quên var trong các biến của mình.
Về đầu trang
Các kiu nguyên thy và các đối tượng
Trong khi JavaScript không đơn giản, thì nó li khá đơn giản khi nói đến các kiểu. Trong thực tế,
JavaScript thực sự chỉ bốn kiểu cơ bản, ba trong số đó là các kiểu nguyên thy. Các kiểu
nguyên thủy của JavaScript là Number, StringBoolean. Bn có thể xem thông tin các kiểu
này thông qua toán ttypeof tin dụng của JavaScript.
Hãyng dùng thử toán tử này. Trong giao diện lập trình JavaScript của Chrome, hãy gõ đoạn
mã trong Liệt kê 2:
Liệt kê 2. Kích hoạt các kiểu
var string = "test"
typeof string
Bạn sẽ thấy giao diện bàn điều khiển in ra giá tr "string." Bạn cũng lưu ý rng các dấu chấm
phẩy là tùy chọn trong JavaScript. Giống như hầu hết các ngôn ngữ phổ biến, một string được
mô tbằng các dấu nháy; cho nên, các s được mô tả bằng các s. Các kiểu Boolean được mô t
bằng các giá tr true (đúng) hay false (sai), không có các dấu nháy.
Liệt kê 3. Các số và chân lý của JavaScript
var aNumber = 10
var anotherNumber = 0.99
var aBool = true
var notABoolean = "false"
Bạn sẽ lưu ý rng JavaScript không phân biệt giữa các kiểu số; các số chỉ là các s, theo các định
dạng khác nhau.
JavaScript cũng htrợ các đối tượng tổng quát có các kiểu cá thể trong và chính bản thân các đối
tượng này, chẳng hạn như Array, như trong Liệt kê 4:
Liệt kê 4. Một cá thể Array
> var myArray = ["Hello", 1, true]
> typeof myArray
"object"
> myArray instanceof Array
true
Các Array (Mảng) trong JavaScript rt thích các danh sách theo các ngôn ngữ khác: người ta có
th tạo ra chúng với kích cỡ tùy ý và có thể chứa bất cứ thứ gì mà bn muốn đưa vào các mảng
đó. Giống như trong Ruby hoặc Groovy, có thể tạo ra các Array của JavaScript bằng một
pháp bằng chữ: []. Hơn nữa, các Array của JavaScript hỗ trợ các phương thức (được hiển thị
trong Liệt kê 5) được bạn dự kiến trong các nn ngữ khác có hỗ trợ các danh sách:
Liệt kê 5. Các phương thức của Array
> var myArray = ["Hello", 1, true]
> myArray[0]
"Hello"
> myArray.length
3
> myArray.pop()
true
> myArray
["Hello", 1]
> myArray.pop()
1
> myArray
["Hello"]
> myArray.push("pushed")
2
> myArray
["Hello", "pushed"]
Bạn có thể nhận được mt giá trị của Array thông qua vị trí của nó, bắt đầu từ s không. Các
Array đáp lại với push pop, ở đây push thêm một mục (vào vị trí cuối cùng trong danh sách
của nó) và pop loi bỏ mt mục (ging như mt ngăn xếp, ra khỏi vị trí cuối cùng).
Các Array cũng hỗ trợ vic lặp lại, được hiển thị trong Liệt kê 6:
Liệt kê 6. Lặp lại qua một Array
> var myArray = [1,2]
> for(var i = 0; i < myArray.length; i++) { console.log(myArray[i]) }
1
2
Về đầu trang
Ép kiểu
JavaScript không chỉ là mt ngôn ngữ định kiểu yếu thậm chí còn yếu hơn so với Ruby
hoặc Groovy! JavaScript cố ép kiểu các đối tượng thành bất cứ kiểu nào có ý nghĩa tại một đim
đã cho trong đoạn mã. Điều đó có ý nghĩa trong bối cảnh ban đầu người ta đã phát minh ra
JavaScript: tương tác trang web. Mã JavaScript viết cẩu thả không nên cấm mt ai đó đọc một
bài báo trực tuyến!
Ép kiểu không phải là duy nhất với JavaScript, nhưng kiểu riêng của JavaScript là khá linh hoạt.
Điều này thể là mt điều tốt hay điều xấu tùy thuộc vào quan đim của bạn. Sự không chặt
chẽ của JavaScript có thể ẩn giấu các li, ging như các biến toàn cầu đã có.
Ví dụ, tôi có thể định nghĩa mt Array và sau đó vô tình c làm mt cái gì đó bằng số với
hoặc thậm c mt số móc nối String, như trong Liệt kê 7:
Liệt kê 7. Tính linh hoạt về kiểu của JavaScript
> var myArray = [1,2]
> console.log(2 * myArray)
> console.log("A" + myArray)