Mỗi biểu thức là một câu lệnh, nhưng không phải mọi câu lệnh đều là một biểu thức. Điều gì làm cho biểu hiện khác nhau?
Mục lục
một tuyên bố là gì?
Một tuyên bố là một đoạn mã làm một cái gì đó
Nó thực hiện [các] hành động hoặc [các] chỉ dẫn có tác dụng
Ví dụ, gán giá trị cho một biến là một câu lệnh
x = 5
Nó thực hiện một phép gán, và kết quả là bây giờ biến x có giá trị là 5
Cũng như định nghĩa lớp, vòng lặp for hoặc if. khác
# definition of a class
class MyClass:
pass
# for loop
for n in [1,2,3]:
print[str[n]]
if x == 6:
print['it is six']
else:
print['it is not six']
- Định nghĩa lớp ở trên định nghĩa một lớp mới và kết quả là chúng ta có một lớp mới mà chúng ta có thể sử dụng
- vòng lặp for phía trên lặp qua danh sách các số và kết quả là nó in ra chúng
- nếu như. câu lệnh khác ở trên kiểm tra giá trị của x và in chuỗi tùy thuộc vào giá trị
một biểu thức là gì?
Một biểu thức là một đoạn mã tạo ra một giá trị. Chúng ta thường nói rằng biểu thức có thể được đánh giá [hoặc giảm] thành một giá trị
Vì vậy, một biểu thức là bất cứ điều gì dẫn đến một giá trị
Ví dụ: phép cộng đơn giản này là một biểu thức, vì nó đánh giá giá trị là 5
1 + 3
# evaluates to 5
Toán tử logic cũng là biểu thức vì chúng luôn tạo ra giá trị bool [Đúng hoặc Sai]
True and False
# evaluates to False
Một ví dụ khác là toán tử so sánh;
4 == 5
# evaluates to False
Một biểu thức có thể là một phần của biểu thức khác để chúng ta có thể xây dựng các biểu thức phức tạp hơn
4 == 5 or 2 == 2
# evaluaates to True
Một biểu thức có thể là một phần của một tuyên bố. ví dụ nếu. câu lệnh khác sử dụng biểu thức trong phần if vì nó cần giá trị bool để biết phải thực thi cái gì
x = 5
if x == 2:
print['True branch']
else:
print['False branch']
Sự khác biệt
Một tuyên bố là một đoạn mã làm một cái gì đó
Một biểu thức là một đoạn mã đánh giá một giá trị
Vì vậy, sự khác biệt giữa câu lệnh và biểu thức là biểu thức luôn tạo ra [đánh giá] một giá trị
Mỗi biểu thức cũng là một câu lệnh - nó làm một cái gì đó. nó trả về một giá trị
Nhưng không phải mọi câu lệnh đều là một biểu thức trừ khi nó tạo ra giá trị
Vì vậy, một biểu thức là một câu lệnh tạo ra [đánh giá] một giá trị
Biểu thức luôn có một kết quả có thể được gán cho một biến. Câu lệnh không phải là biểu thức sẽ không có kết quả và do đó không thể gán cho biến
Chung ta co thể lam được việc nay
# assign expression to a variable
x = 2 * 2
print[x]
# outputs 4
Nhưng chúng ta không thể làm điều này
________số 8_______Cố gắng gán một câu lệnh cho biến x
là không hợp lệ;
Vì vậy, một vài năm trước, tôi đang dạy phát triển web tại một bootcamp mã hóa địa phương và một sinh viên đã hỏi tôi câu hỏi này
Sự khác biệt giữa “câu lệnh” và “biểu thức” trong JavaScript là gì?
Tôi cảm thấy như tôi biết câu trả lời cho câu hỏi này, nhưng khi tôi cố gắng giải thích nó, tôi không thể diễn đạt thành lời. Tôi đã có cảm giác về nó, nhưng kiến thức thực tế của tôi lại mơ hồ một cách đáng ngạc nhiên
Không có gì khiêm tốn hơn giảng dạy 😅. Học sinh có một sở trường để xác định "điểm mờ" trong sự hiểu biết của chúng tôi
Tôi đã nhận ra rằng câu hỏi này cực kỳ quan trọng. Đó là một cột bê tông chịu lực sẽ giúp hỗ trợ rất nhiều kiến thức về JavaScript
Điều này đặc biệt đúng với các nhà phát triển React. Hầu hết các quy tắc JSX mà bạn phải ghi nhớ và luôn quên tuân theo, là kết quả của tính hai mặt của câu lệnh/biểu thức này
Trong bài đăng trên blog này, tôi sẽ chia sẻ một số điều hiển nhiên mà tôi đã có về sự khác biệt này và cách chúng ta có thể sử dụng thông tin này trong công việc hàng ngày của mình
Đối tượng dự địnhHướng dẫn này giả định rằng bạn cảm thấy thoải mái với cú pháp JavaScript cơ bản, nhưng nếu không thì nó được viết để thân thiện với người mới bắt đầu
Ở phần cuối của hướng dẫn, chúng ta xem xét một số ý nghĩa của React và phần này yêu cầu một số kinh nghiệm về React. Nếu bạn không phải là nhà phát triển React, vui lòng bỏ qua phần này;
Biểu thức
Về cốt lõi, một biểu thức là một đoạn mã JavaScript tạo ra một giá trị
Ví dụ, đây là tất cả các biểu thức
4 → tạo rajs
4js
6 → tạo rajs
6js
8 → tạo rajs
9js
0 → tạo ra hoặc làjs
1 hoặc làjs
2js
3 → tạo biểu tượng cảm xúcjs
4 → tạo ra sốjs
5js
Biểu thức có thể chứa biểu thức. Ví dụ: bạn đếm được bao nhiêu biểu thức trong đoạn mã JS này?
Các câu lệnh
Một chương trình JavaScript là một chuỗi các câu lệnh. Mỗi câu lệnh là một hướng dẫn để máy tính làm một việc gì đó
Dưới đây là một số ví dụ về câu lệnh trong JavaScript
js
js
js
Đây là cách tôi muốn nghĩ về điều này. các câu lệnh là cấu trúc cứng nhắc giữ chương trình của chúng ta lại với nhau, trong khi các biểu thức điền vào các chi tiết
Các câu lệnh thường có "khe" cho các biểu thức. Chúng tôi có thể đặt bất kỳ biểu thức nào chúng tôi thích vào các vị trí đó
Ví dụ khai báo biến có ô biểu thức
js
Chúng tôi có thể sử dụng bất kỳ biểu thức nào chúng tôi đã thấy trước đó trong vị trí đó
js
Về mặt cú pháp hợp lệ, các biểu thức có thể hoán đổi cho nhau. Nếu một câu lệnh có một vị trí biểu thức, chúng ta có thể đặt bất kỳ biểu thức nào ở đó và mã sẽ chạy. Chúng tôi sẽ không gặp lỗi cú pháp
Điều đó nói rằng, chúng ta vẫn có thể gặp phải các vấn đề khác. Ví dụ: đoạn mã sau hợp lệ về mặt cú pháp, nhưng chúng tôi sẽ làm hỏng tab trình duyệt nếu chúng tôi cố chạy nó, vì nó gây ra một vòng lặp vô hạn
js
Một thủ thuật hữu ích
Bạn muốn biết liệu một đoạn JS là một biểu thức hay một câu lệnh?
js
Nếu nó chạy, mã là một biểu thức. Nếu bạn gặp lỗi, đó là một câu lệnh [hoặc có thể là JS không hợp lệ]
Như một phần thưởng, chúng ta thậm chí có thể xem biểu thức phân giải thành gì, vì nó sẽ được in trong bảng điều khiển trình duyệt
Điều này hoạt động vì tất cả các đối số chức năng phải là biểu thức. Biểu thức tạo ra một giá trị và giá trị đó sẽ được chuyển vào hàm. Các câu lệnh không tạo ra giá trị và vì vậy chúng không thể được sử dụng làm đối số của hàm
Ngay cả khi là một nhà phát triển có kinh nghiệm, tôi vẫn dựa rất nhiều vào
6. Đó là một công cụ linh hoạt tuyệt vờijs
Biểu thức dưới dạng câu lệnh
Đây là một biểu thức.
7js
Điều gì xảy ra nếu chúng ta tạo một tệp JS chỉ bao gồm biểu thức này?
js
Tập tin này có bao nhiêu câu lệnh?
Đây là thỏa thuận. biểu thức không thể tồn tại một mình. Họ luôn luôn là một phần của một tuyên bố. Và vì vậy trong trường hợp này, chúng tôi có một tuyên bố giống như thế này
js
Tuyên bố về cơ bản là trống ngoài vị trí biểu thức của nó. Biểu thức của chúng tôi
7 điền vào chỗ trống này và tuyên bố của chúng tôi đã hoàn thànhjs
Nói cách khác, tất cả các dòng sau đây là câu lệnh hợp lệ
js
Thông thường, các hướng dẫn sẽ nói sai rằng biểu thức là câu lệnh, nhưng điều này không hoàn toàn đúng. Biểu thức và tuyên bố là những điều khác biệt. Nhưng có thể một câu lệnh bao quanh một biểu thức mà không cung cấp bất kỳ ký tự bổ sung nào. Hãy nghĩ về nó giống như gói một chiếc bánh sandwich trong màng bọc trong suốt
Các câu lệnh thường kết thúc bằng dấu chấm phẩy, đánh dấu sự kết thúc của câu lệnh. Dấu chấm phẩy không cần thiết đối với một số câu lệnh nhất định, chẳng hạn như câu lệnh
0, vòng lặpjs
1 và khai báo hàmjs
Ý nghĩa thực tế trong React
Nếu bạn đã từng làm việc với React trước đây, bạn có thể biết rằng các dấu ngoặc ngoằn ngoèo [
2 vàjs
3] cho phép chúng ta nhúng các bit JavaScript vào trong JSX của mình, như thế nàyjs
0js
Đây là một phần khiến React trở nên kỳ diệu;
Nhưng có một nhược điểm - chúng tôi không thể đặt bất kỳ JavaScript nào bên trong dấu ngoặc nhọn. Cụ thể, chúng tôi chỉ có thể bao gồm các biểu thức, không phải câu lệnh. Các dấu ngoặc nguệch ngoạc về cơ bản tạo ra một vùng biểu thức trong JSX của chúng ta
Nếu chúng ta cố gắng nhúng một câu lệnh ở đây, chẳng hạn như câu lệnh if/else, chúng ta sẽ gặp lỗi
0js
Điều này nổi lên vì các câu lệnh không tạo ra giá trị, chỉ các biểu thức mới tạo ra giá trị. Nếu chúng ta muốn nhúng logic if/else vào JSX của mình, chúng ta cần sử dụng biểu thức toán tử bậc ba
0js
Điều này có vẻ giống như một giới hạn JSX/React kỳ lạ, nhưng thực ra đó là một giới hạn JavaScript
Tôi nghĩ rằng chúng ta thường đổ lỗi cho React về các quy tắc có vẻ tùy tiện, chẳng hạn như cách các thành phần phải trả về một phần tử cấp cao nhất. Nhưng thường xuyên hơn không, React chỉ cảnh báo chúng tôi về giới hạn JavaScript
Hiểu được sự khác biệt giữa câu lệnh và biểu thức là bước đầu tiên quan trọng để làm sáng tỏ toàn bộ danh mục cảnh báo và lỗi React. Chúng ta cũng cần tìm hiểu về cách JSX biên dịch thành JavaScript và cách hoạt động của chu trình đối chiếu và kết xuất của React… nhưng than ôi, những chủ đề đó nằm ngoài phạm vi của bài đăng trên blog này
Nhân tiện, tôi đang trong quá trình tạo một khóa học React toàn diện, tài nguyên mà tôi ước có khi tôi học React. Nó được gọi là The Joy of React, và bạn có thể đăng ký để cập nhật ngay hôm nay
Tóm tắt
Một chương trình JavaScript bao gồm một chuỗi các câu lệnh. Mỗi câu lệnh là một hướng dẫn để làm một việc gì đó, chẳng hạn như tạo một biến, chạy một điều kiện if/else hoặc bắt đầu một vòng lặp
Các biểu thức tạo ra một giá trị và các giá trị này được đưa vào các câu lệnh, giống như hộp mực Super Nintendo thay đổi những gì Super Nintendo thực hiện
Biểu thức luôn là một phần của câu lệnh, ngay cả khi câu lệnh đó trống. Ví dụ: mã bên dưới chạy một vòng lặp mà không sử dụng câu lệnh
4, nhưng nó vẫn bao gồm câu lệnh "trình bao bọc trống"js
js
Có thể mất một lúc để sự khác biệt này trở nên trực quan, nhưng hy vọng bài đăng trên blog này đã làm rõ một số điều