js中的强制转换类型与隐式转换类型的区分

@[TOC]数据类型的相互转换

简述

数据类型的转换是不会改变原始的数据,返回的值必定是一个新的数据

强制转换

转换数值(number)类型

Number(value)在保留字符串的基础上转换字符串中的所有数字,如果该字符串中有除数字外的其他值则返回NaN
//纯数值的字符串
var num1="1.345"
//输出转换后的值
console.log(Number(num1))//返回1.345且为number类型
//参带字母的字符串
var num2="233abc"
//输出转换后的值
console.log(Number(num2))//返回NaN,因为该字符串中出现了不是数字的值
//布尔类型
var num3=true
//输出转换后的值
console.log(Number(num3))//返回1,因为布尔值的true对应的数值是1,false对应的数值是0

parseInt()与parseFloat,都可以转换字符串为数值类型,前者为整数,后者为小数

parseInt()在转换时只保留整数部分,并且只能转换数值的字符串
//纯数值的字符串
var num1="3.345"
//输出转换后的变量
console.log(Number(num1))//返回3且为number类型
//参带字母的字符串
var num2="233abc"
//输出转换后的变量
console.log(Number(num2))//返回NaN,因为该字符串中出现了不是数字的值
//布尔值转换
var num3=true
//输出转换后的值
console.log(Number(num3))//返回NaN
parseFloat()在转换时保留完整的数字,并且只能转换数值的字符串
//纯数值的字符串
var num1="6.345"
//输出转换后的变量
console.log(Number(num1))//返回6.345且为number类型
//参带字母的字符串
var num2="233abc"
//输出转换后的变量
console.log(Number(num2))//返回NaN,因为该字符串中出现了不是数字的值
//布尔值转换
var num3=true
//输出转换后的值
console.log(Number(num3))//返回NaN

转换布尔(boolean)类型

Boolean(value)转换字符串或数值为布尔值,不是true就是false
//除了4种值转换为false外其他的值都是true
var num = 3
console.log(Boolean(num))//返回true
//当转换对象为空字符串、数字0、undefined或null时都是false
var num2 = "", num3 = 0, num4 = undefined, num5 = null
console.log(Boolean(num2),Boolean(num3),Boolean(num4),Boolean(num5))//均返回false

转换字符串(string)类型

String(value)转换数值或布尔值为字符

代码片.

//数值
var num = 6
console.log(String(num))//返回6且是字符串类型的
//布尔值
var str = false
console.log(String(str))//返回false且是字符串类型

隐式转换

1、转成string类型: +(字符串连接符)字符相连,数值相加

//声明两个不同类型的数据
var a = 3222
var b = "abc"
console.log(a+b)//返回3222abc,是个字符串,字符相加改变了原来的类型
//声明两个数值
var num1 = 233
var num2 = 466
console.log(num1+num2)//返回699,这就是数字相加
//如果两个数字有一个是字符串
var num3 = 666
var num4 = "222"
console.log(num3+num4)//返回666222,因为字符串的相连的特性也改变整体的类型

2、转成number类型
第一种:++/–(自增自减运算符)
第二种: + - * / %(算术运算符)
第三种:> < >= <= == != === !=== (关系运算符)

//第一种
var str = "2"
console.log(++str)//返回3,先自增再赋值然后输出,得到的是数值(number)类型
//第二种
var str2 = "6"
console.log(+str2)//返回6,得到的是数值(number)类型
//第三种
var f=9
if(f){
	console.log(233)//输出233,在上面的if()中f会被隐式转换成true作为条件进入然后再输出
}
console.log(f)//输出9且还是数值(number)类型,因为隐式转换的值没有办法接收只是临时作用所以原来的值并不做改变

3、转成boolean类型:!(逻辑非运算符)

// 声明一个字符串
var foo = 'bar'
console.log(!foo)//返回false,在取反时会先进行布尔转换为true再取反为false输出false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值