+运算符在Javascript中的工作方式(运算符重载)

时间:2018-06-22 12:59:25

标签: javascript

我想通过 + 运算符了解幕后发生的事情。

console.log(1 + 2);
console.log(1 + "s");

在以上两个示例中,加法和串联都是使用单个(+)运算符进行的。

我发现,JavaScript不支持运算符重载。那么JavaScript如何处理呢?

2 个答案:

答案 0 :(得分:0)

// 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"

MDN

中的所有示例

答案 1 :(得分:-1)

原因是变量将被强制转换为任何合适的类型。

当您添加1 +“ s”时,1将转换为字符串,因此您具有“ 1” +“ s”。由于+是带有字符串的串联运算符,因此结果将为“ 1s”。

有一些奇怪的例子:

var result =  'b' + 'a' + + 'a' + 'a';

将给出:

>> baNaNa

添加数组也会产生意外结果:

var result = [1, 2, 3] + [4, 5, 6];
console.log(result);

会给予

>> '1,2,34,5,6'

这里有一些更有趣的示例: https://github.com/denysdovhan/wtfjs

JavaScript是一种充满怪癖的语言,值得至少了解其中一些。