js强制类型转换

今日地铁看书总结

强制类型转换
toString()其他数据类型转化为字符串的方法

注意,数组重写了toString()方法。

对于JSON.stringfy()不安全值有undefined,null,function,symbol,循环引用对象,转化他们结果为undefined

JSON.stringfy(function(){}) //undefined

当使用JSON.stringfy()转换类型的时候,如果该对象定义了toJSON()方法,就会先调用toJSON()方法。
当遇到参数为不安全值的时候,也需要toJSON()方法返回一个安全值。
toJSON()方法方法里面可以定义一些特别的转化方式。

var o ={
    e =a //循环引用对象
}
var a ={
    b:42,
    c:o,
    d:function(){}
}
a.toJSON=function(){
    return {b:this.b}  //因为c,d属性均不合法
}
JSON.stringfy(a) //"{b:42}"
强制转化为布尔值

通过new Boolean进行强化转化或者

!!a  // 返回true或者false

一些假值:通过boolean强制转型之后,就会转换为false

undefined
null
false
+0,-0,NaN
'' ''

还有一些看起来像假值,但其实是真值的。

各种字符串(包括:"false","0","''")
空数组,空对象,空函数

总结:不在假值列表的均为真值
还有一点容易与boolean产生混淆.就是if()语句内的判断

0、-0、0.0、null、""、false、undefined、NaN //判断为false

其他情况都是判断为true的
可以看看以下的特殊情况。

18774841-0e675c9572189b8b.png
图片.png

看到

[]==true  //false

这是因为比较的时候,==进行强制类型转换。把[]转换成了0,true转换成了1.所以返回false

显式解析数字字符串

`parseInt(a)接受参数为字符串

var a= '42'
var b= '42px'
Number (a)  //42  转换
parseInt(a)//42  解析
Number (b)  //NAN
parseInt(b)//42
隐式类型转换

可以使用+""进行数字和字符串的隐式转换。他会对a调用valueOf()方法,然后通过toString()抽象操作,把返回值转换为字符串。所以如果valueOf()方法和toString()方法定义存在不和谐的地方,那么最终的返回值就不是23了

42+""  //  "42"

不和谐是指:

var a={
  valueOf:function(){return 42}
  toString:function() {return 4}
}
a+""  //"42"
String(a)  //"4"
||和&&

操作数选择器运算符

var a = 42
var b = null
var c = 'abc'

a||c //42
a||b //null
a&&b //42
a&&c  //'abc'

可以看到:
||判断结果为true时,返回第一个值。结果为false时,返回第二个值
&&判断结果为true时,返回第二个值。结果为false时,返回第一个值
&&的优先级比||高

可以利用||特性,为变量赋予默认值

a=a||42

利用&&特性,为函数执行把关

a&&foo()

布尔类型和其他基本类型的比较

核心:先转化数值再比较

var a ='42'
a==true  //false
a==  false //false

为什么比较中两个都是返回false呢?
首先它会将布尔型通过toNumber()转化为数字。所以toNumber(true)变成1,toNumber(false)返回了0.所以怎么比较都不会相等。
所以日常不要使用if(a==true)这种形式
使用if(a)是可以的。
https://blog.csdn.net/qq_41846861/article/details/100585542

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值