toString,toLocaleString,valueOf的不同

首先valueOf和前两者最不同,因为数组使用它之后返回的是数组本身,依旧是一个数组。

在开发者工具里面进行验证:

var test=['a','b','c']
test
//(3) ["a", "b", "c"]
test.valueOf()
//(3) ["a", "b", "c"]0: "a"1: "b"2: "c"length: 3__proto__: Array(0)

test.valueOf() instanceof Array
//true
复制代码

其次是toString和toLocaleString的比较。

根据《JavaScript高级程序设计(第三版)》中的书写,两者的唯一不同就是前者调用的是每一项的toString()方法,后者调用的是toLocaleString()方法,也即是如果在函数内重新定义了的情况下的书写,但是书里没有写默认两种的区别在哪里。

如果是上面的这个数组test的话,两种方法转换出来的字符串是一模一样的:

test.toLocaleString()
//"a,b,c"

test.toString()
//"a,b,c"复制代码

根据博客小码农雯的这篇文章  ,进行对时间和数字的尝试:

时间:

var test2 = new Date();

test2.toString()
//"Mon Jul 30 2018 15:50:18 GMT+0800 (中国标准时间)"

test2.toLocaleString()
//"2018/7/30 下午3:50:18"复制代码

数字:

var test3=1234567890;

test3.toString();
//"1234567890"
test3.toLocaleString();
//"1,234,567,890"

复制代码

恩,基本与文章说的一致,两者的显示方式不同。

不过如果使用对象是数字的话,toString还有一个传入参数可以进制转换的功能:

test3.toString(2);
//"1001001100101100000001011010010"

test3.toLocaleString(2)
//"1,234,567,890"
复制代码

可以看到toLocaleString()还无法进行进制转换。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值