js变量类型转换

1.js变量的运算

// 字符串与数字相加的时候,会将数字转换为字符串,然后进行拼接
1 + 2 +3 // 6
1 + 2 + '3' // '33'
'1' + 2 + 3 // '123'
true + '10' // 'true10'

// 但是减、乘、除计算则会将其字符串自动转换为数字进行计算
4 - '2' // 2
4 / '2' // 2
4 * '2' // 8

// 因此前端接收到后台的结果时,要进行加法计算时,记得一定将其转换为数字类型,以避免出现意想不到的问题
4 + parseInt('2') // 6

2.双等 ==

// 关于 == 符号的问题,下面的结果都是ture,双等为忽略类型进行比较
100 == '100' // 100会被转换成字符串100进行比较,因此结果为true
0 == ‘’ // 0被转换为false,空字符串也被转换为false,两者相等,结果true
0 == false // 上面说了,0会被转换为false
'' == false // 如上,同理

// 如下可看出,null被认为是对象类型,undefined很明显并不是对象类型
typeof(null) // "object"
typeof(undefined) // "undefined"
// 但使用双等结果为true
null == undefined // 结果为true,双等忽略类型进行比较

3.全等 ===

// 关于 === 全等比较,需要值和类型均相等,下面的值都被转换视为相等,但是类型不等,还是false
0 === false // false
'' === false // false
null === undefined // false
// 建议进行值的比较时用三等进行比较,以避免出现意外情况

// 当然还有一种情况,推荐使用双等进行判断
// 那就是检查一个对象里面某个属性存不存在的时候(也可以是判断一个变量存不存在,不一定就是对象属性)
const friends = {
    name: 'maple'
}
// friends.age的值是undefined(定义了不赋值也是undefined),毫无疑问,undefined和null的类型肯定是不等的
if (friends.age == null){
    console.log('age 属性不存在')
}
// 上面的代码可以看做是如下代码的简写(这里使用三等)
if (friends.age === null || friends.age === undefined){
    console.log('age 属性不存在')
}

// 注意:一个函数无明确的返回值得话返回的值也是undefined
// Undefined类型,有且只有一个值,称为 undefined 。任何没有被赋值的变量值为undefined 
// Null类型,有且只有一个值,称为null 。


// 如下,x没有赋值,那么就是undefined
var x;
x == null // undefined == null 这两者双等是true
x === null // undefined和null类型不一样,三等当然false
x == undefined // undefined当然等于undefined啦,true
x === undefined // 同上
分类: JavaScript 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录