Chúng ta hãy xem mã JavaScript sau đây.
function test[]
{
alert['2'+8];
alert[8-'2'];
}
Trong hộp cảnh báo đầu tiên, nó hiển thị kết quả của quá trình nối 2 và 8 là 28. Trong hộp cảnh báo thứ hai, tuy nhiên nó hiển thị phép trừ của hai số là 6. Làm thế nào?28. In the second alert box, however it displays the subtraction of two numbers which is 6. How?
nnnnnn
Badges vàng 145K2929 gold badges194 silver badges237 bronze badges
Đã hỏi ngày 14 tháng 11 năm 2011 lúc 1:12Nov 14, 2011 at 1:12
1
Toán tử +
bị quá tải. Nếu bất kỳ toán hạng nào là một chuỗi, kết nối chuỗi được thực hiện. Nếu bạn có hai số, bổ sung được thực hiện. -
không bị quá tải theo cách như vậy và tất cả các toán hạng được chuyển đổi thành số.
Từ đặc điểm kỹ thuật:
11.6.1 Toán tử bổ sung [ +]
[...] 7. Nếu loại [lprim] là chuỗi hoặc loại [rprim] là chuỗi, thì
7. If Type[lprim] is String or Type[rprim] is String, then
- Trả về chuỗi đó là kết quả của việc kết hợp toString [LPRIM] theo sau là toString [RPRIM]
8. Trả về kết quả của việc áp dụng hoạt động bổ sung cho Tonumber [LPRIM] và Tonumber [RPRIM]. [...]
[...]11.6.2 Toán tử trừ [ -]
[...] 5. Đặt lnum là tonumber [lval]. 6. Đặt rnum là tonumber [rval]. 7. Trả về kết quả của việc áp dụng hoạt động trừ vào lnum và rnum. [...]
5. Let lnum be ToNumber[lval].
6. Let rnum be ToNumber[rval].
7. Return the result of applying the subtraction operation to lnum and rnum.
[...]
Đã trả lời ngày 14 tháng 11 năm 2011 lúc 1:16Nov 14, 2011 at 1:16
Felix Klingfelix KlingFelix Kling
775K172 Huy hiệu vàng1070 Huy hiệu bạc1118 Huy hiệu đồng172 gold badges1070 silver badges1118 bronze badges
+
được sử dụng cho cả kết nối chuỗi và bổ sung. Nếu một trong hai hoạt động là một chuỗi, việc kết hợp được sử dụng. -
chỉ được sử dụng để trừ, cả hai người vận hành luôn được sử dụng theo số.
Đã trả lời ngày 14 tháng 11 năm 2011 lúc 1:17Nov 14, 2011 at 1:17
lừa dối ♦ lừa dối♦deceze
500K82 Huy hiệu vàng721 Huy hiệu bạc868 Huy hiệu Đồng82 gold badges721 silver badges868 bronze badges
+
được sử dụng cho cả cách ghép và bổ sung, nhưng khi được sử dụng với một chuỗi, mặc định để kết hợp. -
không thể được sử dụng trên các chuỗi, vì vậy các toán hạng của nó được chuyển đổi thành số.
Chỉnh sửa: Điều này không có nghĩa là giống hệt với bài viết trên! XD
Đã trả lời ngày 14 tháng 11 năm 2011 lúc 1:19Nov 14, 2011 at 1:19
Ry- ♦ ry-♦Ry-
213K54 Huy hiệu vàng446 Huy hiệu bạc459 Huy hiệu Đồng54 gold badges446 silver badges459 bronze badges
1st: Nó ném toán hạng thứ 2 cho toán hạng 1 [chuỗi], bởi vì + cũng được sử dụng cho chuỗi liên kết.
2nd: Nó ném toán hạng thứ 2 cho một số, bởi vì - chỉ được sử dụng cho các hoạt động số.
Đã trả lời ngày 14 tháng 11 năm 2011 lúc 1:16Nov 14, 2011 at 1:16
Felix Klingfelix Klingstecb
775K172 Huy hiệu vàng1070 Huy hiệu bạc1118 Huy hiệu đồng2 gold badges49 silver badges68 bronze badges
+
được sử dụng cho cả kết nối chuỗi và bổ sung. Nếu một trong hai hoạt động là một chuỗi, việc kết hợp được sử dụng. -
chỉ được sử dụng để trừ, cả hai người vận hành luôn được sử dụng theo số.
Đã trả lời ngày 14 tháng 11 năm 2011 lúc 1:17May 9, 2014 at 8:18
lừa dối ♦ lừa dốiThumbz
500K82 Huy hiệu vàng721 Huy hiệu bạc868 Huy hiệu Đồng3 silver badges10 bronze badges
Toán tử trừ [ Toán tử trừ chuyển đổi cả hai toán hạng thành các giá trị số và thực hiện phép trừ số hoặc phép trừ Bigint, tùy thuộc vào hai loại toán hạng. Nếu các loại không khớp, một -
] trừ hai toán hạng, tạo ra sự khác biệt của chúng.subtraction [-
] operator subtracts the two operands, producing their difference. Thử nó
Cú pháp
Sự mô tả
2 sẽ bị ném.// Number - Number -> subtraction
5 - 3; // 2
// Number - Number -> subtraction
3 - 5; // -2
Ví dụ
Phép trừ với số
// Number - Number -> subtraction
5 - 3; // 2
// Number - Number -> subtraction
3 - 5; // -2
Phép trừ với những người không phải là số
// String - Number -> subtraction
"foo" - 3; // NaN; "foo" is converted to the number NaN
// Number - String -> subtraction
5 - "3"; // 2; "3" is converted to the number 3
Phép trừ với Bigint
// BigInt - BigInt -> subtraction
2n - 1n; // 1n
Bạn không thể kết hợp các toán hạng lớn và số trong phép trừ.
2n - 1; // TypeError: Cannot mix BigInt and other types, use explicit conversions
2 - 1n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
Thông số kỹ thuật
Đặc tả ngôn ngữ Ecmascript # Sec-SubTraction-Operator-Minus # sec-subtraction-operator-minus |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt