JavaScript之数据类型转换——隐式转换与运算符

隐式转换

无需程序员干预,js自动完成的类型转换。

隐式转换其实是一把双刃剑,如果利用好的话会减少很多代码量;但是在不需要的时候一定要记得进行强制转换,转成自己需要的类型,不然会出现许多莫名其妙的错误和操作。

运算符

算数运算

隐式转换:

  • 默认转数字再计算。
  • 在+运算中,只要有一个字符串,就都转为字符串,在拼接。
console.log("123"+456);//"123456"
console.log(123+456);//579
console.log(123+true);//124
console.log(123+"true");//"123true"

两个特殊的案例:

{}+[]=0
[]+{}="[object Object]"

%运算

  • 被除数/除数,取除不尽的余数部分。
  • 作用:
    1.判断是否整除时。
    2.限制某个值不超过上限。
5%4=1
4%5=4
4%4=0

++运算 - -运算

  • 单独使用,放前面放后面都一样。
  • 在表达式中:
    1.无论前后,都会讲变量值+1或-1。
    2.放前,返回新值。
    3.放后,返回旧值。
var n=3;
console.log(n++ + ++n + n++);//13
console.log(n);//6
关系运算

作比较,做判断。

隐式转换:

  • 默认都转数字,在比较。
  • 如果两个都是字符串,则按位比较unicode号
console.log("a">"b");//false
/*先将字符串转为unicode号
"a".charCodeAt()=97
"b".charCodeAt()=98
*/

NaN

isNaN(num)
1.num是否是数字类型或能否被隐式转换转为数字类型。
2.如果num是数字,返回false.
3.如果num不是数字,返回true.

console.log(isNaN(123));//false
console.log(isNaN("qwer"));//true

null和undefined

必须用“===”来区分
1.类型相同,且值相同。
2.===不带隐式类型转换。

console.log(null==undefined);//true
console.log(null===undefined);//false
逻辑运算

根据多个关系运算的结果,综合得出的结论。

&&运算

  • 两个条件都是true,结果才为true.
  • 只要任意一个为false,结果为false.
  • 短路:前一个为false,后一个不再执行。

||运算

  • 只要任意一个为true,结果为true.
  • 只有两个都为false时,结果才为false.
  • 短路:只要前一个为true,后一个不再执行。
console.log(4&&5);//5
console.log(4||5);//4
console.log(0&&4);//0
console.log(4||0);//4

!运算

  • 颠倒bool结果
  • !!值,最快将任意值转成bool
console.log(!!2);//true
console.log(!!"string");//true
console.log(!!0);//false
位运算

>>

/2的n次方。

<<

*2的n次方。

>>>num(无符号右移num位)

多用取整(下取整)。

console.log(12.345>>>0);//12
console.log(12.95>>>0);//12
扩展赋值运算

+=,-=,*=,/=,%=

修改变量的值,在存回变量是使用。

i+=j;//相当于:i=i+j;
三目/三元/条件运算

根据不同条件,执行不同操作或返回不同值。

语法:

条件1?操作1或值1:
条件2?操作2或值2:
…?…:
默认操作或值;

特点:

  • 默认操作不能省。
  • 如果前一个条件已经满足,则不再向下判断,保证每次只有一个操作执行。
var weight=parseFloat(prompt("请输入体重:"));
var height=parseFloat(prompt("请输入身高:"));
var result=weight/(height*height);
     result>25?console.log("胖"):
     result<20?console.log("瘦"):
               console.log("正常");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值