Bài đăng trên blog này xem xét sự khác biệt về cú pháp không may là khá quan trọng trong JavaScript. sự khác biệt giữa biểu thức và câu lệnh
Báo cáo và biểu thức
JavaScript phân biệt biểu thức và câu lệnh. Một biểu thức tạo ra một giá trị và có thể được viết ở bất cứ nơi nào giá trị được mong đợi, chẳng hạn như một đối số trong lệnh gọi hàm. Mỗi dòng sau chứa một biểu thức.myvar 3 + x myfunc["a", "b"]Đại khái, một câu lệnh thực hiện một hành động. Vòng lặp và câu lệnh if là ví dụ về câu lệnh. Một chương trình về cơ bản là một chuỗi các câu lệnh [ở đây chúng ta bỏ qua các phần khai báo]. Bất cứ nơi nào JavaScript mong đợi một câu lệnh, bạn cũng có thể viết một biểu thức. Một tuyên bố như vậy được gọi là một tuyên bố biểu thức. Ngược lại không giữ. bạn không thể viết một câu lệnh mà JavaScript mong đợi một biểu thức. Ví dụ: câu lệnh if không thể trở thành đối số của hàm
Các loại tuyên bố và biểu thức tương tự
Sự khác biệt giữa câu lệnh và biểu thức trở nên rõ ràng hơn nếu chúng ta xem xét các thành viên của hai phạm trù cú pháp giống nhauCâu lệnh if so với toán tử điều kiện
Sau đây là một ví dụ về câu lệnh if.var x; if [y >= 0] { x = y; } else { x = -y; }Các biểu thức có một toán tử tương tự, có điều kiện. Các mệnh đề trên tương đương với mệnh đề sau.
var x = [y >= 0 ? y : -y];Mã giữa dấu bằng và dấu chấm phẩy là một biểu thức. Dấu ngoặc đơn là không cần thiết, nhưng tôi thấy toán tử điều kiện dễ đọc hơn nếu tôi đặt nó trong dấu ngoặc đơn
Toán tử dấu chấm phẩy so với dấu phẩy
Trong JavaScript, người ta sử dụng dấu chấm phẩy để xâu chuỗi các câu lệnh.foo[]; bar[]Đối với biểu thức, có toán tử dấu phẩy ít được biết đến.
foo[], bar[]Toán tử đó đánh giá cả hai biểu thức và trả về kết quả của biểu thức thứ hai. ví dụ.
> "a", "b" 'b' > var x = ["a", "b"]; > x 'b' > console.log[["a", "b"]]; b
Biểu thức trông giống như câu lệnh
Một số biểu thức trông giống như câu lệnh. Chúng tôi sẽ xem xét lý do tại sao đó là một vấn đề ở cuối phần nàyĐối tượng theo nghĩa đen so với khối
Sau đây là một đối tượng theo nghĩa đen, một biểu thức tạo ra một đối tượng.{ foo: bar[3, 5] }Tuy nhiên, đây cũng là một tuyên bố hoàn toàn hợp pháp, với các thành phần này
- Một khối. một chuỗi các câu lệnh trong dấu ngoặc nhọn
- một nhãn. bạn có thể thêm tiền tố vào bất kỳ câu lệnh nào có nhãn. Đây là nhãn foo
- Bản tường trình. thanh câu lệnh biểu thức [3, 5]
> [] + {} "[object Object]" > {} + [] 0Cho rằng toán tử cộng có tính chất giao hoán, hai câu lệnh [biểu thức] này có trả về cùng một kết quả không? .
> +[] 0Để biết chi tiết về hiện tượng này và các hiện tượng NƯỚC khác, hãy tham khảo [1]
JavaScript có các khối độc lập? . Đoạn mã sau minh họa một trường hợp sử dụng cho các khối đó. Bạn có thể gán cho họ một nhãn hiệu và thoát khỏi họ
Câu lệnh và biểu thức là hai thuật ngữ rất quan trọng trong JavaScript. Do tần suất hai thuật ngữ này được sử dụng để mô tả mã JavaScript, điều quan trọng là phải hiểu ý nghĩa của chúng và sự khác biệt giữa hai thuật ngữ này.
Biểu thứcBất kỳ đơn vị mã nào có thể được đánh giá thành một giá trị là một biểu thức. Vì các biểu thức tạo ra các giá trị, nên chúng có thể xuất hiện ở bất kỳ đâu trong chương trình mà JavaScript mong đợi một giá trị, chẳng hạn như các đối số của lời gọi hàm. Theo tài liệu MDN, JavaScript có các loại biểu thức sau
biểu thức số học
Các biểu thức số học đánh giá một giá trị số. Ví dụ bao gồm những điều sau đây
10; // Here 10 is an expression that is evaluated to the numeric value 10 by the JS interpreter10+13; // This is another expression that is evaluated to produce the numeric value 23
biểu thức chuỗi
Biểu thức chuỗi là biểu thức đánh giá thành một chuỗi. Ví dụ bao gồm những điều sau đây
var x; if [y >= 0] { x = y; } else { x = -y; }0
Biểu thức logic
Biểu thức đánh giá giá trị boolean đúng hoặc sai được coi là biểu thức logic. Tập hợp các biểu thức này thường liên quan đến việc sử dụng các toán tử logic && [AND],. [Hoặc và. [KHÔNG PHẢI]. Những ví dụ bao gồm
var x; if [y >= 0] { x = y; } else { x = -y; }1
Biểu thức chính
Biểu thức chính đề cập đến các biểu thức độc lập như giá trị bằng chữ, từ khóa nhất định và giá trị biến. Ví dụ bao gồm những điều sau đây
var x; if [y >= 0] { x = y; } else { x = -y; }2
Biểu thức bên trái
Còn được gọi là giá trị, biểu thức bên trái là những biểu thức có thể xuất hiện ở bên trái của biểu thức gán. Ví dụ về các biểu thức bên trái bao gồm những điều sau đây
var x; if [y >= 0] { x = y; } else { x = -y; }3
Bây giờ chúng ta đã tìm hiểu những khái niệm cơ bản về biểu thức, hãy tìm hiểu sâu hơn một chút về biểu thức
biểu thức chuyển nhượng
Khi các biểu thức sử dụng toán tử = để gán giá trị cho một biến, nó được gọi là biểu thức gán. Những ví dụ bao gồm
var x; if [y >= 0] { x = y; } else { x = -y; }4
Toán tử = mong đợi một giá trị lvalue là toán hạng bên trái của nó. Giá trị của biểu thức gán là giá trị của toán hạng bên phải, chẳng hạn như 55 trong ví dụ trên. Là một tác dụng phụ, toán tử = gán giá trị ở bên phải cho giá trị ở bên trái
Biểu hiện với tác dụng phụ
Như chúng ta vừa thấy với các biểu thức gán, các biểu thức có tác dụng phụ là những biểu thức dẫn đến sự thay đổi hoặc tác dụng phụ như đặt hoặc sửa đổi giá trị của một biến thông qua toán tử gán =, gọi hàm, tăng hoặc giảm giá trị của biến
var x; if [y >= 0] { x = y; } else { x = -y; }5Báo cáo
Một tuyên bố là một hướng dẫn để thực hiện một hành động cụ thể. Những hành động như vậy bao gồm tạo một biến hoặc một hàm, lặp qua một mảng các phần tử, đánh giá mã dựa trên một điều kiện cụ thể, v.v. Các chương trình JavaScript thực sự là một chuỗi các câu lệnh
Các câu lệnh trong JavaScript có thể được phân thành các loại sau
Tuyên bố tuyên bố
Loại câu lệnh như vậy tạo ra các biến và hàm bằng cách sử dụng các câu lệnh var và hàm tương ứng. Những ví dụ bao gồm
var x; if [y >= 0] { x = y; } else { x = -y; }6
Báo cáo biểu thức
Bất cứ nơi nào JavaScript mong đợi một câu lệnh, bạn cũng có thể viết một biểu thức. Những phát biểu như vậy được gọi là phát biểu biểu thức. Nhưng điều ngược lại không giữ. Bạn không thể sử dụng một câu lệnh thay cho một biểu thức
var x; if [y >= 0] { x = y; } else { x = -y; }7
Các biểu thức chính độc lập như giá trị biến cũng có thể chuyển thành câu lệnh tùy thuộc vào ngữ cảnh. Ví dụ về các câu lệnh biểu thức bao gồm những điều sau đây
var x; if [y >= 0] { x = y; } else { x = -y; }8
Câu điều kiện
Các câu lệnh có điều kiện thực hiện các câu lệnh dựa trên giá trị của một biểu thức. Ví dụ về câu lệnh có điều kiện bao gồm if. câu lệnh khác và chuyển đổi
var x; if [y >= 0] { x = y; } else { x = -y; }00
Vòng lặp và Nhảy
Các câu lệnh lặp bao gồm các câu lệnh sau. trong khi, làm/trong khi, cho và cho/trong. Các câu lệnh nhảy được sử dụng để làm cho trình thông dịch JavaScript chuyển đến một vị trí cụ thể trong chương trình. Ví dụ về câu lệnh nhảy bao gồm ngắt, tiếp tục, quay lại và ném
Biểu thức hàm so với khai báo hàm
Biểu thức hàm, đặc biệt là biểu thức hàm được đặt tên và khai báo hàm có thể trông giống nhau nhưng hành vi của chúng rất khác nhau
Biểu thức hàm là một phần của biểu thức gán biến và có thể chứa hoặc không chứa tên. Vì loại hàm này xuất hiện sau toán tử gán = nên nó được đánh giá như một biểu thức. Các biểu thức hàm thường được sử dụng để gán một hàm cho một biến. Các biểu thức hàm chỉ được đánh giá khi trình thông dịch đến dòng mã nơi đặt các biểu thức hàm
var x; if [y >= 0] { x = y; } else { x = -y; }01
Chỉ có thể gọi ngay các biểu thức hàm. Các loại biểu thức hàm như vậy được gọi là Biểu thức hàm được gọi ngay lập tức [IIFE]
var x; if [y >= 0] { x = y; } else { x = -y; }02
Mặt khác, khai báo hàm là các câu lệnh khi chúng thực hiện hành động tạo một biến có giá trị là giá trị của hàm. Khai báo hàm thuộc danh mục khai báo. Ngoài ra, các khai báo hàm được đưa lên đầu mã không giống như các biểu thức hàm. Khai báo hàm phải luôn được đặt tên và không được ẩn danh
var x; if [y >= 0] { x = y; } else { x = -y; }03
Để đọc sâu hơn về câu lệnh so với biểu thức, vui lòng tham khảo các nguồn được liệt kê trong phần tài liệu tham khảo