js变量的强制类型转换

01、其他的简单类型→String

方法一:变量+""或变量+“aaa

如下:

var a = 123;
var b = a + "";
var c = a + "ccc"
console.log(typeof b) //输出string
console.log(typeof c) //输出string

方法二:调用toString()方法

如下:

变量.toString()

[重要]该方法不会影响到原变量,它会将转换的结果返回。当然我们还可以直接写成a = a. toString() ,这样的话,就是直接修改原变量。
注意: null和undefined这两个值没有toString()方法,所以它们不能用方法二。如果调用,会报错。
另外,Number类型的变量,在调用toString()时,可以在方法中传递一个整数作为参数。 此时它将会把数字转换为指定的进制,如果不指定则默认转换为10进制。例如:

var a = 255;
a = a.toString(2)
console.log(a) // 输出11111111
console.log(typeof a) // 输出string

方法三:使用String()函数

如下:

String(变量)

使用String()函数做强制类型转换时:

  • 对于Number和Boolean而言,实际上就是调用toString()方法。
  • 但是对于null和undefined ,就不会调用toString()方法。它会将null直接转换为"null".将undefined直接转换为"undefined"。

prompt():用户的输入

我们在JS中prompt()就是专用来弹出能够让用户输入的对话框。重要的是:用户不管输入什么,都是字符串。

02、其他数据类型→Number

方法一:使用Number()函数

  • 情况一:字符串→数字

    1. 如果字符串中是纯数字,则直接将其转换为数字
    2. 如果字符串中有非数字的内容,则转换为NaN。( 此处可以看到Number()函数的局限性)
    3. 如果字符串是一个空串或者是一个全是空格的字符串 ,则转换为0
  • 情况二:布尔→数字

    1. true转换成1
    2. false转换成0
  • 情况三:null→数字

    结果为0

  • undefined→数字

    结果为NaN

方法二:parseInt()字符串→整数【重要】

parseInt()是专门用来对付字符串的,向下取整

parselnt()的作用是将字符串中的有效的整数内容转为数字。parse表示"转换”,Int表示"整数”(注意Int的拼写)。例如:

var a = parselnt("5")
console.log(a) // 输出5
console.log(typeof a)  // 输出number

parselnt()还具有以下特性:

  1. 只保留字符串最开头的数字,后面的中文自动消失,如:

    console.log(parseInt("2022年度排行11")) // 输出2022
    console.log(parseInt("2022.021年度排行11")) // 输出2022(只取整数部分)
    console.log(parseInt("aaa2022年度排行11")) // 输出NaN
    
  2. 自带截断小数的功能:取整,向下取整,不四舍五入

    例1:

    var a = parseInt(4.8) + parseInt(3.6);
    console.log(a); // 输出7
    

    例2:

    var a = parseInt(4.8 + 3.6);
    console.log(a); // 输出8
    
  3. 如果对非string使用**parseInt()parseFloat()**,它会先将其转化为string然后在操作。对于非字符串的非数值类型,不要使用parseInt()进行转换,直接使用Number()函数进行转换

    如:

    var a = true;
    console.log(parseInt(a)) // 输出NaN 因为先将a转换为"true",然后在操作
    			
    var b = null
    console.log(parseInt(b)) // 输出NaN 因为先将b转换为"null",然后在操作
    			
    var c = undefined
    console.log(parseInt(c)) // 输出NaN 因为先将c转换为"undefined",然后在操作
    
    var d = 168.22
    console.log(parseInt(d)) // 输出168 因为先将d转换为"168.22",然后在操作
    
  4. 带两个参数时,表示进制转换

    console.log(parseInt(111111,2)) // 输出 63 将二进制111111转换为十进制63
    console.log(parseInt(111111,3)) // 输出 364 将三进制111111转换为十进制364
    

方法三:parseFloat()字符串→浮点数(小数)

parseFloat()是专门用来对付字符串的

parseFloat()的作用是:将字符串转换为浮点数。
parseFloat()parseInt()的作用类似,不同的是,parseFloat()可以获得有效的小数部分。
代码举例:

var a = "1024.1024sss"
console.log(parseFloat(a)) // 输出 1024.1024

03、其他数据类型→Boolean

将其他的数据类型转换为Boolean,可以使用Boolean()函数。

  • 情况一:数字→布尔。除了0和NaN,其余的都是true.
  • 情况二:字符串→布尔。除了空串,其余的都是true。
  • 情况三::null和undefined都会转换为false.
  • 情况四:对象也会转换为true.

PS :转换为Boolean的这几种情况,很重要,开发中会经常用到。

其他进制的数字

  • 16进制的数字,以0x开头
  • 8进制的数字,以0开头
  • 2进制的数字,0b 开头(不是所有的浏览器都支持: chrome和火狐支持,IE不支持)

比如070这个字符串,如果我调用parseInt()转成数字时,有些浏览器会当成8进制解析,有些会当成10进制解析。
所以,比较建议的做法是:可以在parseInt()中传递第二个参数,来指定数字的进制。例如:

console.log(parseInt(111111,2)) // 输出 63 将二进制111111转换为十进制63
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值