Khoa Toan tin, §¹i c Qc gia Hµ Néi
2. y dng c biu thc trong JavaScript
định nghĩa và phân loI biu thc
Tp hp các literal, biến và các tn t nhm đánh giá mt giá tr nào đó đưc
gi là mt biu thc (expression). V cơ bn có ba kiu biu thc trong
JavaScript:
· S hc: Nhm đ lưng giá giá tr s. Ví d (3+4)+(84.5/3) đưc
đánh g bng 197.1666666667.
· Chui: Nhm đ đánh giá chui. Ví d "The dog barked" +
barktone + "!" The dog barked ferociously!.
· Logic: Nhm đánh giá giá tr logic. Ví d temp>32 có th nhn
giá tr sai. JavaScript cũng h tr biu thc điu kin, cú pp như
sau:
(condition) ? valTrue : valFalse
Nếu điu kin condition được đánh giá là đúng, biu thc nhn giá tr
valTrue, ngược li nhn giá tr valFalse. Ví d:
state = (temp>32) ? "liquid" : "solid"
Trong ví d này biến state đưc gán giá tr "liquid" nếu giá tr ca
biến temp ln hơn 32; trong trưng hp ngược li nó nhn giá tr
"solid".
Các toán t (operator)
Toán t đưc s dng đ thc hin mt phép toán nào đó trên d liu. Mt toán
t có th tr li mt giá tr kiu s, kiu chui hay kiu logic. Các tn t trong
JavaScript có th được nhóm thành các loi sau đây: gán, so sánh, s hc,
chui, logic và logic bitwise.
2.1.1. Gán
Toán t gán là du bng (=) nhm thc hin vic gán giá tr ca toán hng bên
phi cho toán hng bên trái. Bên cnh đó JavaScript còn h tr mt s kiu tn
t gán rút gn.
Kiu gán thông thường Kiu gán rút gn
x = x + y x + = y
x = x - y x - = y
x = x * y x * = y
x = x / y x / = y
www.viet-ebook.co.cc
Khoa Toan tin, §¹i c Qc gia Hµ Néi
x = x % y x % = y
2.1.2. So sánh
Người ta s dng toán t so sánh để so sánh hai toán hng và tr li giá tr đúng
hay sai ph thuc vào kết qu so sánh. Sau đây là mt s tn t so sánh trong
JavaScript:
== Tr li giá tr đúng nếu toán hng bên trái bng toán hng bên
phi
!= Tr li giá tr đúng nếu toán hng bên trái khác toán hng bên
phi
> Tr li giá tr đúng nếu tn hng bên trái ln hơn toán hng
bên phi
>= Tr li giá tr đúng nếu tn hng bên trái ln hơn hoc bng
toán hng bên phi
< Tr li giá tr đúng nếu tn hng bên trái nh hơn tn hng
bên phi
<= Tr li giá tr đúng nếu tn hng bên trái nh hơn hoc bng
toán hng bên phi
2.1.3. S hc
Bên cnh các tn t cng (+), tr (-), nn (*), chia (/) thông thường, JavaScript
còn h tr các tn t sau đây:
var1% var2 Toán t phn dư, tr li phn dư khi chia var1 cho
var2
- Toán t ph đnh, có giá tr ph đnh toán hng
var++ Toán t này tăng var lên 1 (có th biu din là ++var)
var-- Toán t này gim var đi 1 (có th biu din là --var)
Khoa Toan tin, §¹i c Qc gia Hµ Néi
2.1.4. Chui
Khi đưc s dng vi chui, tn t + đưc coi là kết hp hai chui,
ví d:
"abc" + "xyz" được "abcxyz"
2.1.5. Logic
JavaScript h tr các toán t logic sau đây:
expr1 && expr2 Là tn t logic AND, tr li giá tr đúng nếu c
expr1 và expr2 cùng đúng.
expr1 || expr2 Là toán t logic OR, tr li giá tr đúng nếu ít
nht mt trong hai expr1 và expr2 đúng.
! expr Là toán t logic NOT ph đnh giá tr ca expr.
2.1.6. Bitwise
Vi các toán t thao tác trên bit, đầu tiên giá tr được chuyn dưi dng s
nguyên 32 bit, sau đó ln lượt thc hin các pp toán trên tng bit.
& Toán t bitwise AND, tr li giá tr 1 nếu c hai bit cùng là 1.
| Toán t bitwise OR, tr li giá tr 1 nếu mt trong hai bit là 1.
^ Toán t bitwise XOR, tr li giá tr 1 nếu hai bit có giá tr khác nhau
Ngoài ra còn có mt s tn t dch chuyn bitwise. Giá tr đưc chuyn thành s
nguyên 32 bit trước khi dch chuyn. Sau khi dch chuyn, giá tr li được chuyn
thành kiu ca toán hng bên trái. Sau đây là các toán t dch chuyn:
<< Toán t dch trái. Dch chuyn toán hng trái sang trái mt s
lưng bit bng toán hng phi. Các bit b chuyn sang trái b mt
và 0 thay vào phía n phi. Ví d: 4<<2 tr thành 16 (s nh phân
100 tr thành s nh phân 10000)
>> Toán t dch phi. Dch chuyn toán hng trái sang phi mt
s lưng bit bng toán hng phi. Các bit b chuyn sang phi b
Chó ý
NÕu b¹n g¸n gi¸ trÞ cña to¸n tö ++ hay -- vµo mét biÕn, nh y= x++, cã thÓ cã c¸
c
kÕt qu kh¸c nhau phô thuéc vµo vÞ trÝ xuÊt hiÖn tr íc hay sau cña ++ hay -- víi tª
n
biÕn (lµ x trong tr êng hîp nµy). NÕu ++ ®øng tr íc x, x sÏ ® îc t¨ng hoÆc gi
m
tr íc khi gi¸ trÞ x ® îc g¸n cho y. NÕu ++ hay -- ®øng sau x, gi¸ trÞ cña x ® îc g¸n
cho y tr íc khi nã ® îc t¨ng hay gim.
Khoa Toan tin, §¹i c Qc gia Hµ Néi
mt và du ca tn hng bên trái được gi nguyên. Ví d: 16>>2
tr thành 4 (s nh phân 10000 tr thành s nh phân 100)
>>> Toán t dch phi có chèn 0. Dch chuyn toán hng trái sang
phi mt s lưng bit bng tn hng phi. Bit du được dch
chuyn t trái (ging >>). Nhng bit được dch sang phi b xoá đi.
Ví d: -8>>>2 tr thành 1073741822 (bi các bit du đã tr thành
mt phn ca s). Tt nhiên vi s dương kết qu ca tn t >>
và >>> là ging nhau.
Có mt s tn t dch chuyn bitwise rút gn:
Kiu bitwise thông
thường
Kiu bitwise rút gn
x = x << y x << = y
x = x >> y x - >> y
x = x >>> y x >>> = y
x = x & y x & = y
x = x ^ y x ^ = y
x = x | y x | = y
Bài tp
2.1.7. Câu hi
Hãy đánh giá các biu thc sau:
1. a. 7 + 5
b. "7" + "5"
c. 7 == 7
d. 7 >= 5
e. 7 <= 7
2. f. (7 < 5) ? 7 : 5
g. (7 >= 5) && (5 > 5)
h. (7 >= 5) || (5 > 5)
2.1.8. Tr li
Các biu thc đưc đánh giá như sau:
1. a. 12
Khoa Toan tin, §¹i c Qc gia Hµ Néi
b. "75"
c. true
d. true
e. true
2. f. 5
g. false
h. true