Học Javascript part 2
Bài đăng này đã không được cập nhật trong 8 năm
Operators
Ở bài viêt này mình sẽ giới thiệu 2 operators là Arithmetic và Equality
**1. ** Arithmetic Operators
- Sử dụng với integers, floating-point numbers hoặc characters.
Bao gồm các dạng sau:
-
Phép cộng (+) :
console.log("3 + 4 = " + (3 + 4)); // in ra màn hình 3 + 4 = 7
-
Phép trừ (-) :
console.log("4 - 3 = " + (4 - 3)); // in ra màn hình 4 - 3 = 1
-
Phép nhân (*) :
console.log("4 * 3 = " + (4 * 3)); // in ra màn hình 4 * 3 = 12
-
Phép chia (/) :
7/3 // với toán hạng là integer thì sẽ chia lấy phần dư do đó kết quả 2 7/3.0f // với toán hạng là float thì sẽ lấy kết quả là float = 2.333333f 7/0 // Throws ArithmeticException 7/0.0 // kết quả = positive infinity 0.0/0.0 // kết quả = NaN
-
Phép chia lấy dư (%):
7%3 // kết quả = 1 7.1%3.1 // kết quả = 0.8999999999999995 7%0 // throw arithmetricException 7%0.0 // kết quả = positive infinity 0.0%0.0 // kết quả = NaN
-
Phép toán 1 ngôi với dâu trừ (-):
Khi dùng phép - trước một toán hạng, nó thực hiện phép ngịch đảo: dương thành âm và ngược lại.
-
Phép toán 1 ngôi với dấu (+):
Nếu toán hạng không phải là numeric thì phép toán này sẽ convert toán hạng đó sang numberic, phép toán này chỉ đơn giản là giúp cho code của bạn trở nên clear hơn chứ không làm nhiệm vụ gì cả. Vd:
var profit = +1000000;
-
Phép tăng 1 (++): Có 2 dạng:
Pre Increment:
i = 1; j = ++i; // print j = 2, i = 2
Post Increment:
i = 1; j = ++i; // print j = 1, i = 2
-
Phép giảm 1 (--): Tương tự như phép tăng 1 nhưng là trừ 1
-
**2. ** Equality Operators
-
Equality (==) và Identity (===) : Thoạt nhìn có thể thấy hai phép so sánh này trông giống nhau nhưng phép (===) giới hạn hơn nhiều so với phép (==).
Sau đây là các qui tắc của phép (===):
- Nếu 2 toán hạng không cùng kiểu (types) , chúng ko bằng nhau. vd 3 không bằng "3".
- Nếu 2 toán hạng là số và phải cùng giá trị, chúng bằng nhau, Nếu một trong 2 toán hạng là NaN chúng không bằng nhau. Để kiểm tra xem 1 số có phải là NaN không bạn có thể sử dụng hàm isNaN().
- Nếu 2 toán hạng là strings và chũng có cùng số ký tự và trật tự của các ký tự giống nhau thì chúng bằng nhau. Nếu 2 strings khác nhau về độ dài hoặc ký tự thì chúng không bằng nhau. Trong một số trường hợp đặc biệt chuẩn unicode cho phép có nhiều hơn 1 cách để encode cùng 1 string. Để tiện hơn, bạn có thể convert string về "normalized form" để so sánh bằng cách dùng hàm String.localCompare().
- Nếu 2 toán hạng là boolean và cùng bằng true hoặc false thì chúng bằng nhau.
- Nếu 2 toán hạng cùng tham chiếu đến một object, array hoặc function thì chúng bằng nhau. Nếu chúng tham chiếu đến 2 object, array hoặc function khác nhau thì chúng không bằng nhau, kể cả 2 toán hạng có cùng chỉ số.
- Nếu 2 toán hạng cùng là null hoặc undefined thì chúng bằng nhau.
Sau đây là các qui tắc của phép (==):
- Nếu 2 toán hạng cùng kiểu, kết quả của phép (==) được suy ra qua kết quả của phép (===).
- Nếu 2 toán hạng không cùng kiểu, chúng vẫn có thể bằng nhau. Sử dụng các qui tắc sau và convert về cùng 1 kiểu để so sánh:
+ Nếu 1 toán hạng bằng null và toán hạng kia là undefined thì chúng bằng nhau
+ Nếu 1 toán hạng là number và toán hạng kia là string, thì convert string về number và so sánh.
+ Nếu 1 toán hạng là True convert nó về 1 và so sánh lại 1 lần nữa, nếu 1 toán hạng là false convert nó về 0 và so sánh lại 1 lần nữa.
+ Nếu 1 toán hạng là object và toán hạng kia là number hoặc string, convert object về primitive và so sánh lại 1 lần nữa, bằng cách sử dụng hàm toString() hoặc valueOf().
+ Ngoài các trường hợp các trường hợp còn lại là không bằng nhau.
Ví dụ:
`"1" == true // bằng nhau`
- Inequality (!=) and Nonidentity (!==) : Giống với so sánh (==) và (===) ở trên nhưng có điểm khác là so sánh khác nhau.
.... Continue ...
All rights reserved