javascript窗口警报中的消息类型

时间:2014-09-10 07:58:40

标签: javascript

我想提醒以下人员,

1. alert(1+1+1+1+1);

//output: 5

2. alert('1'+1+1+1+1);

//output: 11111

3. alert(1+1+1+1+'1');

//output: 41

4. alert(1+1+'1'+1+1);

//output: 2111

有人能解释警报中的邮件类型吗?

先谢谢你。

3 个答案:

答案 0 :(得分:2)

好吧,在javasciprt中,数字+数字+数字=数字(你的情况1)

然后,字符串后面的数字与字符串连接,并产生一个字符串作为输出' 1' +1 =' 11' + 1 =' 111'等等。 (你的案子2)

在第三种情况下,字符串只是在数字的末尾,它被转换为字符串,结果将只是数字,后跟字符串形式的字符串.2 +' 432&#39 ; =' 2432'。

最后一种情况是以上所有的混合1 + 1 = 2 +' 1' =' 21' +1 =' 211' +1 =' 2111'。

答案 1 :(得分:-1)

Javascript是一种弱类型语言,运算符重载。这就是为什么你会得到那些“奇怪”的行为。

哇,操作员超载。啊?

javascript中的+有多个功能。一个是:adding up numbers,另一个是concatenating strings together。这称为运算符重载。与PHP相比,加起来的数字为+,但串联的字符串为.

运算符重载的一个大问题是。如果我们有String + Number怎么办?或者数字+字符串?

适用不同的规则:

1+1+1+1+1

这很简单,加了5个数字。

'1'+1+1+1+1

这比较难。他看到的是一个字符串,所以他将它与下一个部分(第二个1)连接起来。然后他继续说道。 String(11)+ 1,给出String(111)等等。

第三个例子很有趣。他开始将所有数字加起来,直到他到达最后+个符号。它没有Number(4)+ String(1)。因此,他将Number转换为字符串并将它们连接在一起。

最后一个例子也是如此。如果两者中的一个是String,则+符号将被解释为Contatenation。

答案 2 :(得分:-1)

我正在阅读w3school的Automatic type conversion,我认为这与你的问题有关。

它说:

  

当JavaScript尝试对“错误”数据类型进行操作时,它会尝试将值转换为“正确”类型。

它说结果并不总是你所期望的:

5 + null    // returns 5         because null is converted to 0
"5" + null  // returns "5null"   because null is converted to "null"
"5" + 1     // returns "51"      because 1 is converted to "1"  
"5" - 1     // returns 4         because "5" is converted to 5