Chương này mô tả các biểu thức và toán tử của JavaScript, bao gồm phép gán, so sánh, số học, bitwise, logic, chuỗi, bậc ba và hơn thế nữa.
Bạn đang xem : là gì … trong js
Một toán tử gán sẽ gán một giá trị cho toán hạng bên trái của nó dựa trên giá trị của toán hạng bên phải của nó.
Toán tử gán đơn giản là bằng ( =
), sẽ gán giá trị của toán hạng bên phải cho toán hạng bên trái của nó.
Nghĩa là, x = f ()
là một biểu thức gán giá trị của f ()
cho x
.
Ngoài ra còn có các toán tử gán ghép là viết tắt của các phép toán được liệt kê trong bảng sau:
Gán cho thuộc tính
Nếu một biểu thức đánh giá thành một đối tượng , thì phía bên trái của biểu thức gán có thể thực hiện phép gán cho các thuộc tính của biểu thức đó.
Ví dụ:
let
obj =
{
}
;
obj .
x =
3
;
bảng điều khiển .
nhật ký
(
obj .
x )
;
bảng điều khiển .
nhật ký
(
obj )
;
const
key =
"y"
;
obj [
key ]
=
5
;
bảng điều khiển .
nhật ký
(
obj [
khóa ]
)
; p >
bảng điều khiển
.
nhật ký
(
obj )
;
Để biết thêm thông tin về các đối tượng, hãy đọc Làm việc với các đối tượng .
Nếu một biểu thức không đánh giá một đối tượng, thì các phép gán cho các thuộc tính của biểu thức đó không được gán:
let
val =
0
;
bảng điều khiển .
nhật ký
(
val .
x =
3
) p >
;
bảng điều khiển .
nhật ký
(
val .
x )
;
bảng điều khiển .
nhật ký
(
val )
;
Có lỗi khi gán giá trị cho các thuộc tính không thể sửa đổi hoặc cho các thuộc tính của một biểu thức không có thuộc tính ( null
hoặc undefined
). < / p>
Cấu trúc phá hủy
Đối với các bài tập phức tạp hơn, cú pháp chuyển nhượng cơ cấu lại là một biểu thức JavaScript giúp bạn có thể trích xuất dữ liệu từ các mảng hoặc đối tượng bằng cách sử dụng cú pháp phản ánh cấu trúc của mảng và
đối tượng theo nghĩa đen.
var
foo =
[
'một'
,
'hai' < / p>
,
'ba'
]
;
var
một =
foo [
0
]
;
var
hai =
foo [
1
]
;
var
ba =
foo [
2
]
;
var
[
một ,
hai ,
ba ]
=
foo ; p>
Đánh giá và lồng ghép
Nói chung, các phép gán được sử dụng trong một khai báo biến (nghĩa là với const
, let
, hoặc var
) hoặc dưới dạng các câu lệnh độc lập).
let
x=
f
(
)
;
x=
g
(
)
;
Tuy nhiên, giống như các biểu thức khác, các biểu thức gán như x = f ()
đánh giá thành một giá trị kết quả.
Mặc dù giá trị kết quả này thường không được sử dụng, nhưng sau đó nó có thể được sử dụng bởi một biểu thức khác.
Việc xâu chuỗi các bài tập hoặc lồng ghép các bài tập trong các biểu thức khác có thể dẫn đến hành vi đáng ngạc nhiên.
Vì lý do này, một số hướng dẫn kiểu JavaScript không khuyến khích gán chuỗi hoặc lồng nhau ).
Tuy nhiên, đôi khi có thể xảy ra chuỗi nhiệm vụ và lồng ghép, vì vậy điều quan trọng là bạn phải hiểu được cách chúng hoạt động.
Bằng cách xâu chuỗi hoặc lồng một biểu thức gán, bản thân kết quả của nó có thể được gán cho một biến khác.
Nó có thể được ghi lại, nó có thể được đặt bên trong một lời gọi hàm hoặc chữ của mảng, v.v.
let x;
const
y=
(
x=
f
(
)
)
;
bảng điều khiển.
nhật ký
(
y)
;
bảng điều khiển.
nhật ký
(
x=
f
(
)
)
;
console.
nhật ký
(
[
0
,
x=
f
(
)
,
0
]
)
;
bảng điều khiển.
nhật ký
(
f
(
0
,
x=
f
(
)
,
0
)
)
;
Kết quả đánh giá khớp với biểu thức ở bên phải của dấu =
trong
Cột “Ý nghĩa” của bảng trên. Điều đó có nghĩa là x = f ()
đánh giá thành
x + = f ()
đánh giá thành tổng kết quả x + f ()
,
x ** = f ()
đánh giá thành sức mạnh kết quả x ** y
, v.v.
Trong trường hợp gán logic, x & amp; & amp; = f ()
,
x || = f ()
và x ?? = f ()
, giá trị trả về là của
hoạt động logic mà không cần gán, vì vậy x & amp; & amp; f ()
,
x ?? f ()
, tương ứng.
Khi xâu chuỗi các biểu thức này mà không có dấu ngoặc đơn hoặc các toán tử nhóm khác
giống như các ký tự mảng, các biểu thức gán được nhóm từ phải sang trái
(chúng liên kết phải ), nhưng chúng được đánh giá từ trái sang phải.
Lưu ý rằng, đối với tất cả các toán tử gán khác với chính =
,
các giá trị kết quả luôn dựa trên các giá trị của toán hạng trước đó
hoạt động.
Ví dụ: giả sử rằng các hàm sau f
và g
và các biến x
và y
đã được khai báo:
function
f
(
)
{
bảng điều khiển .
nhật ký
(
'F!'
)
;
trả về
2
;
}
function
g
(
)
{
bảng điều khiển .
nhật ký
(
'G!'
)
;
trả về
3
;
}
let
x ,
y ;
Hãy xem xét ba ví dụ sau:
y =
x =
f
(
)
y =
[
f
(
)
,
x =
g
(
)
]
x [
f
(
)
]
=
g
< p class = "dấu chấm câu"> ( )
Ví dụ đánh giá 1
y = x = f ()
tương đương với y = (x = f ())
,
bởi vì toán tử gán =
là phải-kết hợp .
Tuy nhiên, nó đánh giá từ trái sang phải:
- Biểu thức gán
y = x = f ()
bắt đầu đánh giá.-
y
ở phía bên trái của bài tập này đánh giá
thành một tham chiếu đến biến có têny
. - Biểu thức gán
x = f ()
bắt đầu đánh giá.-
x
ở phía bên trái của bài tập này đánh giá
thành một tham chiếu đến biến có tênx
. -
Lệnh gọi hàm
f ()
in ra “F!” vào bảng điều khiển và
sau đó đánh giá thành số2
. - Kết quả
2
đó từf ()
được gán chox
.
-
-
Biểu thức gán
x = f ()
hiện đã kết thúc đánh giá;
kết quả của nó là giá trị mới củax
, là2
. - Đến lượt kết quả
2
đó cũng được gán choy
.
-
-
Biểu thức gán
y = x = f ()
hiện đã kết thúc đánh giá;
kết quả của nó là giá trị mới củay
– tương đương với2
.
x
vày
được gán cho2
,
và bảng điều khiển đã in “F!”.
Ví dụ đánh giá 2
y = [f (), x = g ()]
cũng đánh giá từ trái sang phải:
- Biểu thức gán
y = [f (), x = g ()]
bắt đầu đánh giá.-
y
ở bên trái của bài tập này đánh giá
thành một tham chiếu đến biến có têny
. - Mảng bên trong ký tự
[f (), x = g ()]
bắt đầu đánh giá.-
Lệnh gọi hàm
f ()
in ra “F!” vào bảng điều khiển và
sau đó đánh giá thành số2
. - Biểu thức gán
x = g ()
bắt đầu đánh giá.-
x
ở phía bên trái của bài tập này đánh giá
thành một tham chiếu đến biến có tênx
. -
Lệnh gọi hàm
g ()
in ra “G!” vào bảng điều khiển và
sau đó đánh giá thành số3
. - Kết quả
3
đó từg ()
được gán chox
.
-
-
Biểu thức gán
x = g ()
hiện đã kết thúc đánh giá;
kết quả của nó là giá trị mới củax
, là3
.
Kết quả3
đó trở thành phần tử tiếp theo
trong ký tự mảng bên trong (sau2
từf ()
).
-
Lệnh gọi hàm
-
Mảng bên trong chữ
[f (), x = g ()]
hiện đã đánh giá xong;
kết quả của nó là một mảng có hai giá trị:[2, 3]
. - Mảng
[2, 3]
đó hiện được gán choy
.
-
-
Biểu thức gán
y = [f (), x = g ()]
có
bây giờ đã đánh giá xong;
kết quả của nó là giá trị mới củay
– có nghĩa là[2, 3]
.
x
hiện được gán cho3
,
y
hiện được gán cho[2, 3]
,
và bảng điều khiển đã in “F!” rồi “G!”.
Ví dụ đánh giá 3
x [f ()] = g ()
cũng đánh giá từ trái sang phải.
(Ví dụ này giả định rằng x
đã được gán cho một số đối tượng.
Để biết thêm thông tin về các đối tượng, hãy đọc Làm việc với các đối tượng .)
- Biểu thức gán
x [f ()] = g ()
bắt đầu đánh giá.-
Quyền truy cập thuộc tính
x [f ()]
ở bên trái của bài tập này
bắt đầu đánh giá.-
x
trong quyền truy cập thuộc tính này đánh giá
thành một tham chiếu đến biến có tênx
. -
Sau đó, lệnh gọi hàm
f ()
in ra “F!” vào bảng điều khiển và
sau đó đánh giá thành số2
.
-
-
Quyền truy cập thuộc tính
x [f ()]
vào bài tập này
hiện đã đánh giá xong;
kết quả của nó là một tham chiếu thuộc tính biến:x [2]
. -
Sau đó, lệnh gọi hàm
g ()
in ra “G!” vào bảng điều khiển và
sau đó đánh giá thành số3
. -
3
đó hiện được gán chox [2]
.
(Bước này sẽ chỉ thành công nếux
được gán cho một đối tượng .)
-
Quyền truy cập thuộc tính
-
Biểu thức gán
x [f ()] = g ()
hiện đã kết thúc đánh giá;
kết quả của nó là giá trị mới củax [2]
– xảy ra là3
.
x [2]
hiện được gán cho3
,
và bảng điều khiển đã in “F!” rồi “G!”.
Tránh các chuỗi phân công
Chuỗi các phép gán hoặc lồng nhau các phép gán trong các biểu thức khác có thể
dẫn đến hành vi đáng ngạc nhiên. Vì lý do này,
không khuyến khích gán chuỗi trong cùng một câu lệnh ).
Cụ thể, đặt một chuỗi biến trong const
, let
hoặc var < / code>
câu lệnh thường không hoạt động.
Chỉ biến ngoài cùng / ngoài cùng bên trái mới được khai báo;
bất kỳ biến nào khác trong chuỗi gán không được khai báo bởi câu lệnh const
/ let
/ var
.
Ví dụ:
let
z =
y =
x =
f
( p >
)
;
Câu lệnh này dường như khai báo các biến x
, y
và z
.
Tuy nhiên, nó chỉ thực sự khai báo biến z
.
y
và x
là các tham chiếu không hợp lệ đến các biến không tồn tại (ở chế độ nghiêm ngặt ) hoặc tệ hơn, sẽ ngầm tạo ra biến toàn cục span> cho x
và y
ở chế độ cẩu thả .
Xem thêm những thông tin liên quan đến chủ đề cái gì ... trong js
ASYNC JavaScript trong 30 phút (CALLBACK, PROMISES, ASYNC AWAIT)
- Tác giả: HoleTex
- Ngày đăng: 2021-11-28
- Đánh giá: 4 ⭐ ( 2556 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Học ASYNC JavaScript trong 30 phút (CALLBACK, PROMISES, ASYNC AWAIT)
Xử lý bất đồng bộ trong JS là một công việc chúng ta sẽ phải đối mặt rất thường xuyên. Và hôm nay chúng ta sẽ cùng nhau tìm hiểu về các cách khác nhau để xử lý bất đồng bộ trong JS, cũng như là tìm hiểu về các vấn đề khi xử lý bất đồng bộ với Callback như là Callback Hell
- Callback
- Promises
- Async/Await📢 Liên hệ với mình tại:
Facebook: https://www.facebook.com/holetex/
Instagram: https://www.instagram.com/holetex/
Github: https://github.com/holetexvn
Facebook cá nhân: https://www.facebook.com/minhtung09/
Email: holetex@outlook.comasync js holetex callback asyncawait promises
Boolean trong JavaScript
- Tác giả: freehost.page
- Đánh giá: 3 ⭐ ( 2787 lượt đánh giá )
- Khớp với kết quả tìm kiếm:
DOM Là Gì? Thao Tác Với DOM Bằng Javascript
- Tác giả: codelearn.io
- Đánh giá: 3 ⭐ ( 2530 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Để thao tác được với các thẻ HTML thì phải thông qua một cơ chế ta gọi là DOM. Vậy DOM là gì và cách thao tác với DOM bằng JavaScript nhé!
[Tự học Javascript] Lặp lại(Iterables) trong Javascript
- Tác giả: cafedev.vn
- Đánh giá: 5 ⭐ ( 3868 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Đối tượng lặp(Iterable) là một sự khái quát của mảng. Đó là một khái niệm cho phép chúng ta làm cho bất kỳ đối tượng nào có thể sử dụng được trong một vòng lặp for..of.
Tổng quan về Javascript - Những lý do nên học Javascript
- Tác giả: suntech.edu.vn
- Đánh giá: 4 ⭐ ( 1428 lượt đánh giá )
- Khớp với kết quả tìm kiếm:
5 quy tắc binding trong JavaScript
- Tác giả: topdev.vn
- Đánh giá: 3 ⭐ ( 4293 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Khái niệm "this" trong JavaScript là một trong những cái khó hiểu nhất của ngôn ngữ này, Các trường hợp của this có thể chia thành 5 khía cạnh binding.
[JavaScript] Bài 1 - JavaScript Là Cái Gì?
- Tác giả: viblo.asia
- Đánh giá: 5 ⭐ ( 6281 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Cùng với HTML và CSS, JavaScript là 1 trong số bộ 3 ngôn ngữ khởi đầu cho bất kỳ ai muốn học lập trình web. Nếu như HTML cho phép chúng ta cấu trúc nội dung của trang web, CSS cho phép chúng ta thiết...
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình