七、数据类型转换和运算符

一、数据类型转换

类型转换主要指将其他数据类型转换为:String、Number、Boolean

1、将其他数据类型转换为String

1)  调用toString()方法,b = a.toString();,该方法不会影响原变量,会将结果返回;

Null和Undefined这两个值没有toString()方法,调用会报错 

2)调用String()函数,b = String(a);使用String()函数不会影响原变量,对于Boolean和Number来说调用String()函数就是调用toString()方法,而对于null和undifined转换为“null”,“undefined”。

3)算术运算符(隐式类型转换)

任何值与字符串进行+运算都先转换为字符串再进行拼接:我们只需要为任意的数据类型+“”空串,就可以将其转换为String

,由浏览器自动完成,实际上调用的是String()函数  null+“”;字符串null, undefined+"";字符串undefined,true +“1” =“true1”;true + "" ="true"“123”+“345” =“123345”字符串拼接;  1+2+“3” = “33” ;“1”+2+3=“123”

2、将其它数据类型转换为Number

1)使用Number()函数

       -字符串 ->数字

       如果字符串是纯数字的字符串,则直接将其转换为数字

       如果字符串中有非数字内容则转换为NaN

       如果字符串是一个空串或全部是空格的字符串,则转换为0

       -布尔值-->数值  true:1 false:0、Null 转换为数字0、undefined转换为NaN

2)使用parseInt()将字符串中有效的整数内容解析出来,然后转换为Number,

                                  var  a = "123a2345px"   ;//123   "b123px";//NaN   a = true;//NaN

            parseFloat()将字符串中有效的浮点数内容解析出来,然后转换为Number,

                     var a = "123.234.345px";//123.234

如果对非String使用parseInt()或 parseFloat()会先将其转换为String然后再操作:  a = true,false、 null、 undefined--->NaN

十六进制 a=0x10;输出还是按照十进制输出

八进制 b= 070;//56

二进制 c=0b0101010;//二进制在浏览器中兼容性不好,有些浏览器不支持(IE)

b2 = parseInt(a);// chroome、Firefox、IE11、IE10、Edge输出结果为56,IE9及以下中报错但也输出结果56,浏览器版本 不同可能有些版本的浏览器会解析成70,

b3 = parseInt(a,10);//为了防止不同浏览器解析出来的结果不同,可以用第二个参数指定进制

3)算术运算符(隐式类型转换)算数运算符不会对原变量产生影响

+:当对Number类型的值进行运算时,会将这些值转换为Number再进行运算。任何值和NaN做运算都得NaN

true+1 =2 ;false +1 =1;null + 1 = 1;undefined+1 = NaN;NaN+1 = NaN;

1+2+“3” = “33”;字符串33,从左往右进行计算; “1”+2+3=“123”;字符串123

-:运算符

1-true = 0;1-false = 1;1-null = 1;1-undefined = NaN;1-NaN= NaN;1-“1”=0;1- “”=1;1-“    ”=1;1-“1a”=NaN ;

减0,除1乘1都可以转换成Number原理和Number()一样

4)使用 正号 单目运算符,对于非Number类型的数值先转换成Number类型再进行计算

+正号:-负号 

3、将其他数据类型转换为Boolean

使用Boolean()函数

数字0和NaN转换为false,其他的都是true包括Infinity

字符串中空串转换为false,其他的都是true包括空格

null(空对象) 和undefined都转换为false,对象也会转换为true

隐式类型转换

!非:对布尔值进行取反运算,如果对一个非Booleanz值进行!运算,则会将其转换为布尔值再进行运算

二、运算符

typeof,instanceof也是运算符,返回结果是字符串

1、算数运算都:不会对原变量产生影响

+:

1)当对Number类型的值进行运算时,都将其转换为Number,任何值与NaN相加都是NaN

true+1 =2;false+1 = 1;null+1 = 1;undefined+1 =1;NaN+1 =NaN

2)任意数据类型与字符串+都转换成字符串

1+2+“3”=“33”;“1”+2+3=“123”;null+“”="null";undefined+“”=“undefined”;true+“”=“true”;

NaN + "" ="NaN";

-:

1)任意数据类型进行-运算都是将其转换为Number

1 -true 0;1-false=1;1-null=1;1-undefined = NaN ;1-NaN= NaN;1-“”=1;

1-“1”=0;1-“abc”=NaN ;1-“1abc”=NaN;100-“12”=88

*:

1*2=2;2*‘2’ =4;2*undefined =NaN;2*null=0;2*“”=0;2*false=0;2*true=2;

2*“123”=246;2*“abc”=NaN

3/2=1.5

任何值与- * / 减、乘、除做运算都先转换为Number

%取模:取余数

2、一元运算符

正号:负号:对数字进行取反

对非Number类型的值,先转换为Number再进行运算

3、自增和自减:有些会对原变量产生影响

4、逻辑运算符 !非、&&与、||或

1)布尔值的逻辑运算

!非:对布尔值进行取反运算,如果对一个非Booleanz值进行!运算,则会将其转换为布尔值再进行运算。可以为一个任意数据类型取反两次,来将其转换为布尔值

&&与:两个值都为true才会返回true,JS中&&属于短路的与,当一个值为false就不会检查第二个值了

||或:两个都是false返回false,

2)非布尔值的逻辑运算:对于非布尔值进行与或非运算时 ,先将其转换为布尔值再进行运算,并返回原值。(只有在JS中才可以对非布尔值进行逻辑运行,其他语言中没有这个功能)

&&运算:如果两个值都为true则返回后边的,如果有两个值中有false则返回靠前的false

理解:如果第一个值为true则返回第二个值(它需要去检查第二个值);如果第一个值为false(0,NaN)则返回第一个值

||或运算:如果第一个值为true则返回第一个值,如果第一个值为false则返回第二个值

5、赋值运算符

=:、+=;、-+;、*=;等

6、关系运算符 >、<等

非数值进行比较的情况: 对非数值进行比较时,先转换成数值再进行比较,任何值与NaN做任何类型作比较都是false。

注意:如果关系运算符两侧的符号都是字符串则不会将其转换为数字比较,而是比较字符串的Unicode编码

==:比较两个值如果两个值的类型不同,则自动转换成相同的类型进行再 比较,大部分情况下转换成数组

!=:如果两个值的类型不同则自动进行类型转换,再比较如果不等则返回true

===:不会做类型转换,类型不一样直接返回false

!==:不会做类型转换,,类型不同直接返回true

7、条件运算符(三元运算符)

条件表达式?语句1:语句2,先对条件表达式进行求值如果值为true则执行语句1,如果条件表达式值为false则执行语句2.

并且有返回结果,就是执行的语句1或语句2如果条件表达式的求值结果是一个非Boolean值,则将其转换为布尔值再进行运算

8、typeof运算符检查基本数据类型,instanceof检查引用类型

9、逗号运算符,可以分割多个语句,var a ,b;

三、运算符的优先级:

优先级越高越优先计算,一样高则从左到右计算,可以使用()改变优先级,需要注意的是&&优先级高于||

1)点号obj.name,[]obj[age],new

2)()

3)!、~、+(单目)、-(单目)、typeof、void、delete

4)%、*、/

5)+(双目)、-(双目)

6)<<、>>、>>>

7)==、!==、===

8)&

9)^

10)|

11)&&

12)||

13)?:

14) = 、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=、>>>=

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值