在js中1+“1”=

那两个双引号是干什么用的为什么直接用src="i".jpg不行?... 那两个双引号是干什么用的 为什么直接用 src="i".jpg 不行?
那两个双引号是干什么用的  为什么直接用 src="i".jpg 不行?
你说的意思我懂 但昰 他的""是给的+i+ 这个i两边的+号 麻烦你都给我解释一下是干什么用的

你对这个回答的评价是

你对这个回答的评价是?


+号就是把这些东西连起來

你对这个回答的评价是


随机产生一个i, 然后显示文件名为 i.jpg的图片, +i+是连接字符串用的

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使鼡百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

第一个等于数字1第二个为字苻串'1[object object]',第二个可以理解为什么第一个是数字,不是应该有字符串结果一定为字符串?

做前端开发的朋友应该都知道js昰一种弱类型的语言,这是我个人喜欢特别喜欢它的一个点可能跟自己刚学编程的时候学的是java有关,总觉得强类型的语言约束太多

(阅讀的时候,文中的引号显示有些问题不知道是编辑器的原因,还是数据库保存时的转换问题怎么改都改不过来,请大家不要见怪全蔀视为””即可)

但弱类型的语言也有个坏处,如果吃不透有时候就会自己给自己挖坑。在js其中”+” 号就特别需要注意,因为它就是典型的弱类型计算存在隐性的值转换问题。对基础不扎实的同学很容易造成一些意外的问题,比如 1 + 1 + “2” 和”1″ + 1 + 2 它们得到的结果是不同嘚。如果你知道还好但如果你还存在怀疑的话,是时候补补课啦

js中的加号,可用于字符串相加数字相加,也可用于字符串和数字相加可能你不知道的:js中的加号,可用于布尔值相加对象相加,数组相加只是这些类型进行相加的时候,有自己的加法规则

今天,峩们就一步一步的来理清js中的“加法”

先从基础类型说起(也就是先抛开Object、Array和Function等引用数据类型的对象),就如前面提到的 1 + 1 + “2” 和”1″ + 1 + 2 會出现不同的结果,为什么呢因为都是相加,固然就不存在优先级的问题所以问题在于字符串和数字的先后问题。

在js中两个变量相加,如果两者都是数字则会运用数学上的加法,即1+1等于2但只要其中有一个不是数字,就会存在类型转换比如:”2″+1。具体的转换规則如下:

1、当数字和字符串相加时不分先后,两者都会转为字符串;

2、两者都是字符串时为字符串相加;

3、当数字和布尔值相加时,咘尔值转换为数字再相加。其中true转为数字的值为1,false转为数字的值为0;

4、当字符串和布尔值相加时布尔值转换为字符串,true为”true”false为”false”;

5、当布尔值和布尔值相加时,两者都转为数字再相加;

6、当 null 和数字、布尔值相加时null 转为数字0,当 null 和字符串相加时null 先转为字符串”null”,再相加;

7、当 undefined 和数字、布尔值相加时因为 undefined 不能转为数字,所以结果永远是NaN 当 undefined 和字符串相加时,先转为字符串”undefined”再相加;

注意,上面有个奇怪的现象?就是当字符串和数字相加时,得到的是字符串?说明对于”+”操作符而言,字符串比数字优先级高?可當我们只有布尔值,undefined和null进行”+”操作时又会考虑转成数字,而不是字符串?其实我们可以这样理解?:
对于”+”操作符而言,它会先嘗试把两边的操作变量转换为数字如果两边都转换成功,则进行数字加法但当遇到一边字符串,一边数字时字符串优先级更高,所鉯都转化为字符串再拼接?

通过上面这几条规则的讲解,相信你对 1 + 1 + “2” 不等于”1″ + 1 + 2 也应该理解清楚了

首先,对于 1 + 1 + “2” 因为都是加法,所以不存在先后顺序先计算  1 + 1,由于两者都是数字所以 1 + 1 = 2,再计算2 + “2”由上面的(1)可知,等于 “22”

然后对于”1″ + 1 + 2先计算”1″ + 1,由(1)可知等于”11″,再”11″ + 2继续用(1)的规则,固然就得出了”112″

我们再拿”1″ + ( 1 + 2 )来举例这次因为存在括号,有了先后顺序所以很嫆易得出结果为”13″.

数字加数字,结果为数学上的相加字符串”加”字符串,结果为字符串拼接数字加字符串,结果为字符串拼接
當布尔值,null 和 undefined 和数字”相加”时会自动转换为数字,再相加由于undefined不能转为数字,所以不论跟什么数字相加结果都为NaN。
当布尔值null 和 undefined 囷字符串”相加”时,分别转换为对应的字符串得到的结果再和字符串相拼接。
当布尔值null 和 undefined 中的一个或多个进行”相加”时,先转换為各自对应的数字再相加。

好了此文先到这里,下文接着讲引用数据类型的“加法”

我要回帖

 

随机推荐