我想通过 + 运算符了解幕后发生的事情。
console.log(1 + 2);
console.log(1 + "s");
在以上两个示例中,加法和串联都是使用单个(+)运算符进行的。
我发现,JavaScript不支持运算符重载。那么JavaScript如何处理呢?
答案 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"
中的所有示例
答案 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是一种充满怪癖的语言,值得至少了解其中一些。