ๆญค้ ้ข็”ฑ็คพ็พคๅพž่‹ฑๆ–‡็ฟป่ญฏ่€Œไพ†ใ€‚ไบ†่งฃๆ›ดๅคšไธฆๅŠ ๅ…ฅ MDN Web Docs ็คพ็พคใ€‚

View in English Always switch to English

ๅŠ ๆณ•๏ผˆ+๏ผ‰

Baseline Widely available

This feature is well established and works across many devices and browser versions. Itโ€™s been available across browsers since โจ2015ๅนด7ๆœˆโฉ.

ๅŠ ๆณ•๏ผˆ+๏ผ‰้‹็ฎ—ๅญๆœƒ็”ข็”Ÿๆ•ธๅ€ผ้‹็ฎ—ๅ…ƒ็š„็ธฝๅ’Œๆˆ–ๅญ—ไธฒไธฒๆŽฅ็š„็ตๆžœใ€‚

ๅ˜—่ฉฆไธ€ไธ‹

console.log(2 + 2);
// ้ ๆœŸ่ผธๅ‡บ๏ผš4

console.log(2 + true);
// ้ ๆœŸ่ผธๅ‡บ๏ผš3

console.log("ๅ“ˆๅ›‰ " + "ๅคงๅฎถ");
// ้ ๆœŸ่ผธๅ‡บ๏ผšใ€Œๅ“ˆๅ›‰ ๅคงๅฎถใ€

console.log(2001 + "๏ผšๅคช็ฉบๆผซ้Š");
// ้ ๆœŸ่ผธๅ‡บ๏ผšใ€Œ2001๏ผšๅคช็ฉบๆผซ้Šใ€

่ชžๆณ•

js
x + y

ๆ่ฟฐ

+ ้‹็ฎ—ๅญ่ขซ้‡่ผ‰็”จๆ–ผๅ…ฉ็จฎไธๅŒ็š„ๆ“ไฝœ๏ผšๆ•ธๅ€ผๅŠ ๆณ•่ˆ‡ๅญ—ไธฒไธฒๆŽฅใ€‚ๅœจ้‹็ฎ—ๆ™‚๏ผŒๅฎƒๆœƒๅ…ˆๅฐ‡ๅ…ฉๅ€‹้‹็ฎ—ๅ…ƒๅผทๅˆถ่ฝ‰ๆ›็‚บๅŽŸๅง‹ๅž‹ๅˆฅใ€‚ๆŽฅ่‘—๏ผŒๆœƒๆชขๆŸฅ้€™ๅ…ฉๅ€‹้‹็ฎ—ๅ…ƒ็š„ๅž‹ๅˆฅ๏ผš

  • ๅฆ‚ๆžœๅ…ถไธญไธ€ๆ–นๆ˜ฏๅญ—ไธฒ๏ผŒๅฆไธ€ๅ€‹้‹็ฎ—ๅ…ƒไนŸๆœƒ่ฝ‰ๆ›็‚บๅญ—ไธฒ๏ผŒ็„ถๅพŒ้€ฒ่กŒไธฒๆŽฅใ€‚
  • ๅฆ‚ๆžœๅ…ฉ่€…้ƒฝๆ˜ฏ BigInt๏ผŒๅ‰‡ๅŸท่กŒ BigInt ๅŠ ๆณ•ใ€‚ๅฆ‚ๆžœไธ€ๆ–นๆ˜ฏ BigInt ไฝ†ๅฆไธ€ๆ–นไธๆ˜ฏ๏ผŒๅ‰‡ๆœƒๆ‹‹ๅ‡บ TypeErrorใ€‚
  • ๅฆๅ‰‡๏ผŒๅ…ฉ้‚Š้ƒฝๆœƒ่ฝ‰ๆ›็‚บๆ•ธๅญ—๏ผŒ็„ถๅพŒๅŸท่กŒๆ•ธๅ€ผๅŠ ๆณ•ใ€‚

ๅญ—ไธฒไธฒๆŽฅๅธธ่ขซ่ช็‚บ็ญ‰ๅŒๆ–ผๆจกๆฟๅญ—้ขๅ€ผๆˆ– String.prototype.concat()๏ผŒไฝ†ไธฆ้žๅฆ‚ๆญคใ€‚ๅŠ ๆณ•ๆœƒๅฐ‡้‹็ฎ—ๅผๅผทๅˆถ่ฝ‰ๆ›็‚บๅŽŸๅง‹ๅž‹ๅˆฅ๏ผŒๆญค้Ž็จ‹ๆœƒๅ„ชๅ…ˆๅ‘ผๅซ valueOf()๏ผ›่€Œๆจกๆฟๅญ—้ขๅ€ผ่ˆ‡ concat() ๅ‰‡ๆœƒๅฐ‡้‹็ฎ—ๅผๅผทๅˆถ่ฝ‰ๆ›็‚บๅญ—ไธฒ๏ผŒๅ„ชๅ…ˆๅ‘ผๅซ toString()ใ€‚ๅฆ‚ๆžœ้‹็ฎ—ๅผๆœ‰ [Symbol.toPrimitive]() ๆ–นๆณ•๏ผŒๅญ—ไธฒไธฒๆŽฅๆ™‚ๆœƒไปฅใ€Œdefaultใ€ไฝœ็‚บๆ็คบๅ‘ผๅซ๏ผŒ่€Œๆจกๆฟๅญ—้ขๅ€ผๅ‰‡ไฝฟ็”จใ€Œstringใ€ใ€‚้€™ๅฐๆ–ผๅ…ทๆœ‰ไธๅŒๅญ—ไธฒ่ˆ‡ๅŽŸๅง‹ๅ€ผ่กจ็คบ็š„็‰ฉไปถๅพˆ้‡่ฆ๏ผŒไพ‹ๅฆ‚ Temporal๏ผŒๅ…ถ็‰ฉไปถ็š„ valueOf() ๆ–นๆณ•ๆœƒๆ‹‹ๅ‡บๅ…จ้ƒจไพ‹ๅค–ใ€‚

js
const t = Temporal.Now.instant();
"" + t; // ๆ‹‹ๅ‡บ TypeError
`${t}`; // '2022-07-31T04:48:56.113918308Z'
"".concat(t); // '2022-07-31T04:48:56.113918308Z'

ๅปบ่ญฐไฝ ไธ่ฆไฝฟ็”จ "" + x ไพ†้€ฒ่กŒๅญ—ไธฒๅผทๅˆถ่ฝ‰ๆ›ใ€‚

็ฏ„ไพ‹

ไฝฟ็”จๆ•ธๅญ—ๅŠ ๆณ•

js
1 + 2; // 3

ๅ…ถไป–้žๅญ—ไธฒใ€้ž BigInt ็š„ๅ€ผๆœƒ่ขซ่ฝ‰ๆ›็‚บๆ•ธๅญ—๏ผš

js
true + 1; // 2
false + false; // 0

ไฝฟ็”จ BigInt ๅŠ ๆณ•

js
1n + 2n; // 3n

ไฝ ไธ่ƒฝๅœจๅŠ ๆณ•ไธญๆทท็”จ BigInt ่ˆ‡ๆ•ธๅญ—้‹็ฎ—ๅ…ƒใ€‚

js
1n + 2; // TypeError: Cannot mix BigInt and other types, use explicit conversions
2 + 1n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
"1" + 2n; // TypeError: Cannot mix BigInt and other types, use explicit conversions

่‹ฅ่ฆๅฐ‡ BigInt ่ˆ‡้ž BigInt ้€ฒ่กŒๅŠ ๆณ•๏ผŒ่ซ‹ๅผทๅˆถ่ฝ‰ๆ›ไปปไธ€้‹็ฎ—ๅ…ƒ๏ผš

js
1n + BigInt(2); // 3n
Number(1n) + 2; // 3

ไฝฟ็”จๅญ—ไธฒๅŠ ๆณ•

ๅฆ‚ๆžœๅ…ถไธญไธ€ๅ€‹้‹็ฎ—ๅ…ƒๆ˜ฏๅญ—ไธฒ๏ผŒๅฆไธ€ๅ€‹ๆœƒ่ขซ่ฝ‰ๆ›็‚บๅญ—ไธฒไธฆ้€ฒ่กŒไธฒๆŽฅ๏ผš

js
"foo" + "bar"; // ใ€Œfoobarใ€
5 + "foo"; // ใ€Œ5fooใ€
"foo" + false; // ใ€Œfoofalseใ€
"2" + 2; // ใ€Œ22ใ€

่ฆ็ฏ„

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-addition-operator-plus

็€่ฆฝๅ™จ็›ธๅฎนๆ€ง

ๅƒ่ฆ‹