浅谈js中的隐士转换

浅谈 js 中数据类型的隐士转换

js 代码在编译运行时会存在一定的数据类型之间隐士转换

思考: 为什么会发生隐士转换呢? 在什么情况下会发生隐士转换呢?

下面我们一起来看一下以下几个例子:
var a = 1;
var b = "2";
var c = b - a;
console.log(c);


if("a"){
    console.log('执行了')
}

以上两段代码的执行结果分别是什么呢?

当我们运行之后发现 控制台上分别打印了

1
执行了
- 可以看出当我们字符串'2'和数字1 进行运算时 字符串2发生了**隐式转换**,转化成了数字2
- 当字符串'a'用于条件语句的判断条件时,由于判断条件只需要布尔类型的返回值 所以- 我们的字符串'a'发生了隐士转换,转化成了布尔类型的true.

通过对上面的例子的研究我们得到了以下结论:

1. 为什么会发生隐士转换呢?


- 因为我们得到的变量的数据类型的能并不是我们所需要的数据类型,为了使js代码能够按部就班的正常进行就发生了隐式转换.

2. 在什么情况下会发生隐士转换呢?

js 中的隐士转换一般分为以下三种情况:
1) 其他类型隐士转换为number
    一般是当不同数据类型之间进行(- * / % )等算数运算时,当遇到(+)时运算符两边都为非字符串类型数据时,会隐士转换成number类型 相当于触发了Number()函数
2) 其他类型隐士转换string
    当其他数据类型遇到字符串拼接运算符时(当 '+' 运算符的两边的操作数有一个以上是string类型的数据时,此时'+'运算符即为字符串拼接运算符 ),会隐式转换成字符串 相当于触发了String()函数
3) 其他数据类型隐士转Boolean
    当变量遇到逻辑运算符,个别情况关系运算符时发生 Boolean 隐式转换 相当于触发了 Boolean() 函数

3. js 数据发生隐士转换的规则

基本数据类型隐士转换规则一般分为以下三种情况:

1) 其他数据类型转number
    string ---> number 数字字符串转number ---> 直接转 空字符串转number ---> 0 其他类型字符串转number ---> NaN
    boolean ---> number true ---> 1  false ---> 0
    undefined ---> number NaN
    null ---> number ~~0~~ 
2) 其他类型转string
    直接转
3) 其他类型转Boolean
    当NaN , null , undefined , 0 , '' 转Boolean时值为 ---> false
    其他都为true

引用型数据类型隐士转换规则

    先转字符串再转其他
   **注:** 任何对象(空或者非空) 转字符串 都为[object Object]   空数组转字符串为空 其他数组转字符串直接中括号换引号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值