4.JS中的数据类型转换

把其他数据类型转换为Number

Number([val])
    + 一般用于浏览器的隐式转换中
        @1 数学运算
        @2 isNaN检测
        @3 ==比较
        ...
    + 规则:
        @1 字符串转换为数字:空字符串变为0,如果出现任何非有效数字字符,结果都是NaN
        @2 把布尔转换为数字:true->1  false->0
        @3 null->0  undefined->NaN
        @4 Symbol无法转换为数字,会报错:Uncaught TypeError: Cannot convert a Symbol value to a number
        @5 BigInt去除“n”(超过安全数字的,会按照科学计数法处理)
        @6 把对象转换为数字:
            + 先调用对象的 Symbol.toPrimitive 这个方法,如果不存在这个方法
            + 再调用对象的 valueOf 获取原始值,如果获取的值不是原始值
            + 再调用对象的 toString 把其变为字符串
            + 最后再把字符串基于Number方法转换为数字
parseInt([val],[radix])  parseFloat([val])
    + 一般用于手动转换
    + 规则:[val]值必须是一个字符串,如果不是则先转换为字符串;然后从字符串左侧第一个字符开始找,把找到的有效数字字符最后转换为数字「一个都没找到就是NaN」;遇到一个非有效数字字符,不论后面是否还有有效数字字符,都不再查找了;parseFloat可以多识别一个小数点;
练习题:
let arr = [27.2, 0, '0013', '14px', 123];
arr = arr.map(parseInt);


把其他数据类型转换为String

转化规则:
    @1 拿字符串包起来
    @2 特殊:Object.prototype.toString
出现情况:
    @1 String([val]) 或者 [val].toString()
    @2+”除数学运算,还可能代表的字符串拼接
        + 有两边,一边是字符串
        + 有两边,一边是对象
        + 只出现在左边
        + ...

    ...

练习题:
let result = 100 + true + 21.2 + null + undefined + "Tencent" + [] + null + 9 + false;
console.log(result);
// parseInt的处理规则和Number完全不一致
/* console.log(parseInt('10')); //10
console.log(Number('10')); //10

console.log(parseInt('10px')); //10
console.log(Number('10px')); //NaN

console.log(parseInt(null)); //parseInt('null')  NaN
console.log(Number(null)); //0 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值