Toán tử số học
Toán tử số học lấy giá trị số học (cả chuỗi hoặc biến) làm toán hạng của nó và trả về một giá trị số học. Các toán tử số học thông thường là cộng (+), trừ (-), nhân (*), và chia (/).
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Mã nguồn cho các ví dụ tương tác trong bài được lưu trên GitHub. Nếu bạn muốn đóng góp thêm ví dụ tương tác, làm ơn clone lại https://github.com/mdn/interactive-examples và gửi cho chúng tôi một pull request.
Cộng (+)
Toán tử cộng xuất ra tổng của toán hạng số học hoặc để nối chuỗi.
Cú pháp
Toán tử: x + y
Examples
// Number + Number -> addition
1 + 2 // 3
// Boolean + Number -> addition
true + 1 // 2
// Boolean + Boolean -> addition
false + false // 0
// Number + String -> concatenation
5 + 'foo' // "5foo"
// String + Boolean -> concatenation
'foo' + false // "foofalse"
// String + String -> concatenation
'foo' + 'bar' // "foobar"
Trừ (-)
Toán tử trừ thực hiện trừ hai toán hạng, xuất ra chênh lệch giữa chúng.
Cú pháp
Toán tử: x - y
Ví dụ
5 - 3 // 2
3 - 5 // -2
'foo' - 3 // NaN
Chia (/)
Toán tử chia xuất ra thương của phép chia với toán hạng bên trái là số bị chia và toán hạng bên phải là số chia.
Cú pháp
Toán tử: x / y
Ví dụ
1 / 2 // trả về 0.5 trong JavaScript
1 / 2 // trả về 0 trong Java
// (neither number is explicitly a floating point number)
1.0 / 2.0 // ?trả về 0.5 trong cả JavaScript lẫn Java
2.0 / 0 // ?trả về Infinity trong JavaScript
2.0 / 0.0 // cũng trả về Infinity
2.0 / -0.0 // trả về -Infinity trong JavaScript
Nhân (*)
Toán tử nhân xuất ra tích của các toán hạng.
Cú pháp
Toán tử: x * y
Ví dụ
2 * 2 // 4
-2 * 2 // -4
Infinity * 0 // NaN
Infinity * Infinity // Infinity
'foo' * 2 // NaN
Chia lấy dư (%)
Toán tử chia lấy dư trả về phần dư khi toán hạng thứ nhất chia cho toán hạng thứ hai. Dấu của kết quả luôn cùng dấu với số bị chia.
Cú pháp
Toán tử: var1 % var2
Ví dụ
12 % 5 // 2
-1 % 2 // -1
1 % -2 // 1
NaN % 2 // NaN
1 % 2 // 1
2 % 3 // 2
-4 % 2 // -0
5.5 % 2 // 1.5
Luỹ thừa (**)
Toán tử luỹ thừa trả về kết quả là luỹ thừa bậc là toán hạng thứ hai của toán hạng thứ nhất, tức là, var1
var2
, như đã khẳng định trước đó, với var1
và var2
là biến số. Toán tử luỹ thừa là dạng liên hợp phải. a ** b ** c
bằng với a ** (b ** c)
.
Cú pháp
Toán tử: var1 ** var2
Ghi chú
Trong hầu hết các ngôn ngữ như PHP và Python và một số khác mà có toán tử luỹ thừa (**), toán tử luỹ thừa được định nghĩa là có độ ưu tiên cao hơn toán tử một ngôi như là toán tử + một ngôi và toán tử - một ngôi, nhưng cũng có vài ngoại lệ. Chẳng hạn, trong Bash, toán tử ** được định nghĩa là có độ ưu tiên thấp hơn toán tử một ngôi. Trong JavaScript, hoàn toàn có thể viết một biểu thức luỹ thừa nhập nhằng, như là bạn không thể đặt toán tử một ngôi (+/-/~/!/delete/void/typeof
) ngay trước cơ số.
-2 ** 2;
// 4 trong Bash, -4 trong các ngôn ngữ khác.
// Không hợp lệ trong JavaScript, vì toán tử không nhập nhằng.
-(2 ** 2);
// -4 trong JavaScript và ý định của tác giả không nhập nhằng.
Ví dụ
2 ** 3 // 8
3 ** 2 // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN
2 ** 3 ** 2 // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64
To invert the sign of the result of an exponentiation expression:
-(2 ** 2) // -4
Để ép cơ số trong biểu thức luỹ thừa thành số âm:
(-2) ** 2 // 4
Ghi chú: JavaScript cũng có toán tử thao tác bit ^ (XOR). **
và ^
khác nhau (chẳng hạn: 2 ** 3 === 8
trong khi 2 ^ 3 === 1
.)
Tăng (++)
Toán tử tăng tăng (thêm một vào) toán hạng của nó và trả về một giá trị.
- Nếu dùng như hậu tố, toán tử ở sau toán hạng (chẳng hạn, x++), thí nó trả về giá trị trước khi tăng.
- Nếu dùng như tiền tố, toán tử ở trước toán hạng (chẳng hạn, ++x), thí nó trả về giá trị sau khi tăng.
Cú pháp
Toán tử: x++ hoặc ++x
Ví dụ
// Hậu tố
var x = 3;
y = x++; // y = 3, x = 4
// Tiền tố
var a = 2;
b = ++a; // a = 3, b = 3
Giảm (--)
Toán tử giảm giảm (bớt một khỏi) toán hạng của nó và trả về một giá trị.
- Nếu dùng như hậu tố (chẳng hạn, x--), thì nó trả về giá trị trước khi giảm.
- Nếu dùng như tiền tố (chẳng hạn, --x), thì nó trả về giá trị sau khi giảm.
Cú pháp
Toán tử: x-- hoặc --x
Ví dụ
// Hậu tố
var x = 3;
y = x--; // y = 3, x = 2
// Tiền tố
var a = 2;
b = --a; // a = 1, b = 1
Phủ định một ngôi (-)
Toán tử phủ định một ngôi đứng trước và phủ định toán hạng của nó.
Cú pháp
Toán tử: -x
Ví dụ
var x = 3;
y = -x; // y = -3, x = 3
//toán tử phủ định một ngôi có thể chuyển giá-trị-không-phải-kiểu-số về dạng số học
var x = "4";
y = -x; // y = -4
Cộng một ngôi (+)
Toán tử cộng một ngôi đứng trước và định lượng toán hạng của nó nhưng cố gắng chuyển kiểu cho toán hạng sang dạng số, nếu ban đầu không phải ở dạng đó. Mặc dù toán tử phủ định một ngôi (-) cũng có thể chuyển kiểu như vậy, nhưng toán tử cộng một ngôi lại nhanh nhất và được dùng ưu tiên dùng nhiều hơn khi phải chuyển đổi kiểu dữ liệu về dạng số, bởi vì nó không thực hiện bất cứ phép toán nào khác trên số. Nó có thể chuyển kiểu từ biểu diễn dạng chuỗi của số nguyên hoặc số thực, thậm chí cả các giá trị không phải số như true
, false
, và null
. Số thực ở dạng thập phân và bát phân (tiền tố - "0x") đều được hỗ trợ. Đồng thời hỗ trợ cả số âm (trừ số âm dạng bát phân). Nếu nó không thể truyền đúng dữ liệu đã định, nó sẽ định lượng thành NaN.
Cú pháp
Toán tử: +x
Ví dụ
+3 // 3
+'3' // 3
+true // 1
+false // 0
+null // 0
+function(val){ return val } // NaN
Đặc tả
Đặc tả | Trạng thái | Bình luận |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. |
ECMAScript 5.1 (ECMA-262) | Standard | Defined in several sections of the specification: Additive operators, Multiplicative operators, Postfix expressions, Unary operators. |
ECMAScript 2015 (6th Edition, ECMA-262) | Standard | Defined in several sections of the specification: Additive operators, Multiplicative operators, Postfix expressions, Unary operators. |
ECMAScript 2016 (ECMA-262) | Standard | Added Exponentiation operator. |
ECMAScript 2017 (ECMA-262) | Standard | |
ECMAScript (ECMA-262) | Living Standard |
Tương thích trình duyệt
No compatibility data found for javascript.operators.arithmetic
.
Check for problems with this page or contribute missing data to mdn/browser-compat-data.