js中函数的混合篇(纯属个人笔记,可以不用看)

每天对自己多问几个为什么,总是有着想象不到的收获。 一个菜鸟小白的成长之路(copyer)

valueOf() 和 toString()的返回值

valueOf()

语法:

object.valueOf()

返回值:

返回值为该对象的原始值。

JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要。因此,不同类型对象的valueOf()方法的返回值和返回值类型均可能不同。

对象返回值
Array返回数组对象本身。
Boolean布尔值。
Date存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
Function函数本身。
Number数字值。
Object对象本身。这是默认情况。
String字符串值。
Math 和 Error 对象没有 valueOf 方法。

toString()

语法:

obj.toString()

JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要。

对象返回值
ArraytoString() 方法可把数组转换为字符串,并返回结果(以逗号分隔)JavaScript toString() 方法 | 菜鸟教程 (runoob.com)
Boolean把布尔值转换为字符串,并返回结果。
DatetoString() 方法可把 Date 对象转换为字符串,并返回结果。JavaScript toString() 方法 | 菜鸟教程 (runoob.com)
Function转化函数字符串
Number把数字转换为字符串
Object默认情况, 返回一个字符串 [object Object]
String返回一个字符串

参考资料:

Object.prototype.valueOf() - JavaScript | MDN (mozilla.org)

JavaScript toString() 方法 | 菜鸟教程 (runoob.com)



Number() 、parseInt()、parseFloat的使用与区别

Number(object)

转化规则

  1. 如果是Boolean类型,true转化为1,false转化为0

  2. 如果是number类型,就是简单的传入和传出

  3. 如果是null,返回0

  4. 如果是undefined,返回NaN

  5. 如果是字符串,分为以下几种情况:

    • 字符串只包含数字,转为十进制,会忽略前面的0
    • 如果字符串中包含有效浮点格式,如“1.1”,将其转换为对应的浮点数字,忽略前导0
    • 如果字符串中包含有效的十六进制格式,如“0xf”,将其转换为相同大小的十进制数值
    • 如果字符串为空,将其转换为0
    • 其他的情况的字符串,转化为NaN
  6. 如果是对象类型,则先调用对象的valueOf(),然后在按照上面的规则进行转化,返回结果。如果返回的结果为NaN,则在调用toString(),然后再依照前面的规则转换返回的字符串值

Number对基本数据类型的转化

console.log(Number(true));           // 1
console.log(Number(false));          // 0
console.log(Number(null));           // 0
console.log(Number(undefined));      // NaN

//字符串
console.log(Number('0xfff'));        // 4095
console.log(Number('0022'));         // 22
console.log(Number('00.20'));        // 0.2
console.log(Number(""));             // 0

Number对复杂数据类型转化

console.log(Number({}));             //NaN    调用toString
console.log(Number([12]));           //12     调用toString
let date = new Date()
console.log(Number(date));          //1627971710701   调用valueOf

parseInt(Object, redix)

转化规则:

  • parseInt()函数在转换字符串时,会忽略字符串前面的空格,知道找到第一个非空格字符。
  • 如果第一个字符不是数字或者负号,parseInt() 就会返回NaN,同样的,用parseInt() 转换空字符串也会返回NaN
  • 如果第一个字符是数字字符,parseInt() 会继续解析第二个字符,直到解析完所有后续字符串或者遇到了一个非数字字符。

还可以接受第二个参数: 转化进制(默认十进制)

var num1 = parseInt("AF",16);           //175
var num2 = parseInt("AF");            //NaN
var num3 = parseInt("10",2);           //2  (按照二进制解析)
var num4 = parseInt("sdasdad");         //NaN

parseFloat()

基本跟parseInt的方法一样的解析。

根本区别:

  • parseFloat() 所解析的字符串中第一个小数点是有效的,而parseInt() 遇到小数点会停止解析,因为小数点并不是有效的数字字符。
  • parseFloat() 始终会忽略前导的零,十六进制格式的字符串始终会被转换成0,而parseInt() 第二个参数可以设置基数,按照这个基数的进制来转换。

参考资料:

Number()、parseInt() 和 parseFloat() 的区别_fannnnnn的博客-CSDN博客_number parsefloat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值