Bản dịch này chưa hoàn thành. Xin hãy giúp dịch bài viết này từ tiếng Anh.

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 (/).

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 tử 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. It always takes the sign of the dividend.

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

Exponentiation (**)

The exponentiation operator returns the result of raising first operand to the power second operand. that is, var1var2, in the preceding statement, where var1 and var2 are variables. Exponentiation operator is right associative. a ** b ** c is equal to a ** (b ** c).

Cú pháp

Toán tử: var1 ** var2

Chú ý

In most languages like PHP and Python and others that have an exponentiation operator (**), the exponentiation operator is defined to have a higher precedence than unary operators such as unary + and unary -, but there are a few exceptions. For example, in Bash the ** operator is defined to have a lower precedence than unary operators. In JavaScript, it is impossible to write an ambiguous exponentiation expression, i.e. you cannot put a unary operator (+/-/~/!/delete/void/typeof) immediately before the base number.

-2 ** 2; 
// 4 in Bash, -4 in other languages. 
// This is invalid in JavaScript, as the operation is ambiguous. 


-(2 ** 2); 
// -4 in JavaScript and the author's intention is unambiguous. 

Examples

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

To force the base of an exponentiation expression to be a negative number:

(-2) ** 2 // 4

Note: JavaScript also has a bitwise operator ^ (logical XOR). ** and ^ are different (for example : 2 ** 3 === 8 when 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 Latest Draft (ECMA-262) Draft  

Tương thích trình duyệt

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Addition (+) Yes Yes1 Yes Yes Yes
Decrement (--) Yes Yes1 Yes Yes Yes
Division (/) Yes Yes1 Yes Yes Yes
Exponentiation (**)521452 No Yes10.1
Increment (++) Yes Yes1 Yes Yes Yes
Multiplication (*) Yes Yes1 Yes Yes Yes
Remainder (%) Yes Yes1 Yes Yes Yes
Subtraction (-) Yes Yes1 Yes Yes Yes
Unary negation (-) Yes Yes1 Yes Yes Yes
Unary plus (+) Yes Yes1 Yes Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Addition (+) Yes Yes Yes4 Yes Yes Yes
Decrement (--) Yes Yes Yes4 Yes Yes Yes
Division (/) Yes Yes Yes4 Yes Yes Yes
Exponentiation (**)51521452 Yes10.16.0
Increment (++) Yes Yes Yes4 Yes Yes Yes
Multiplication (*) Yes Yes Yes4 Yes Yes Yes
Remainder (%) Yes Yes Yes4 Yes Yes Yes
Subtraction (-) Yes Yes Yes4 Yes Yes Yes
Unary negation (-) Yes Yes Yes4 Yes Yes Yes
Unary plus (+) Yes Yes Yes4 Yes Yes Yes

1. From version 6.5.0: this feature is behind the --harmony runtime flag.

Đọc thêm

Document Tags and Contributors

Những người đóng góp cho trang này: PurpleLover
Cập nhật lần cuối bởi: PurpleLover,