美文网首页
js强制类型转换

js强制类型转换

作者: haha2333 | 来源:发表于2019-09-28 21:29 被阅读0次

今日地铁看书总结

强制类型转换

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的
可以看看以下的特殊情况。

图片.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

相关文章

  • JavaScript类型转换

    在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用js弱变量类型转换)。 强制类型转换 即通过使...

  • javaScript中数据类型转换方法

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • 前端开发入门到实战:JavaScript字符串转换数字

    js 字符串转换数字方法主要有三种: 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供...

  • 前端开发入门到实战:JavaScript字符串转换数字

    js 字符串转换数字方法主要有三种: 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供...

  • JS类型转换

    方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了parseInt()...

  • js中的类型转换

    在js中数据转换分为3种:隐式类型转换,强制类型转换,函数转换 1.隐式类型转换 (1):运算符转换 js中的值在...

  • JavaScript散乱(一)

    变量和计算 js中使用typeof能得到哪些类型? 强制类型转换 可能引起强制类型转换的操作 字符串拼接 ==运算...

  • JS字符串与数字的相互转换 的3种方式

    转换函数、强制类型转换、利用JS变量弱类型特点进行转换 js字符串转数字# 1. 转换函数## 只有对String...

  • JavaScript字符串转换数字

    这里记录js 字符串转换数字的三种主要方法: 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: ...

网友评论

      本文标题:js强制类型转换

      本文链接:https://www.haomeiwen.com/subject/kerhyctx.html