前言:
作者简介:我是Morning,计算机的打工人,想要翻身做主人
个人主页: Morning的主页
系列专栏: 前端面试备战
如果小编的内容有欠缺或者有改进,请指正拙著。期待与大家的交流
如果感觉博主的文章还不错的话,点赞 + 关注 + 收藏
此篇博客是属于上篇博客在最后提出的遗留问题(toPrimitive算法逻辑中的valueOf和toString介绍)。本来是想等之后再去写这篇文章的,因为对这个知识点也不是那么了解,在网上查找的资料大多也都晦涩,很乱。
但是,不要拖延❗❗❗一起加油吧
目录
一.valueOf
1.定义
2.常用范围
二.toString
1.定义
2.常用范围
3.参数
4.补充知识String
JavaScript 中的 valueOf() 方法用于返回指定对象的原始值,若对象没有原始值,则将返回对象本身。通常由JavaScript内部调用,而不是在代码中显式调用。
可以用于引用类型(对象、数组、函数),返回对象本身;
console.log([1,2,3].valueOf()); //[1, 2, 3]
console.log({a:1}.valueOf()); //{a: 1}
console.log(function(){}.valueOf()); //ƒ (){}
也可以用于基本类型(数值、字符串、布尔值),还是返回基本类型。
null和undefined没有valueOf()方法 Math 和 Error 对象没有 valueOf 方法。
let value1=10
let value2='susu'
let value3=true
let value4=null
let value5
console.log(value1.valueOf());//10
console.log(value2.valueOf());//'susu'
console.log(value3.valueOf());//true
console.log(value4.valueOf());//报错
console.log(value5.valueOf());//报错
将一个值转换为字符串有两种方式,几乎所有之都有的方法toString便是其中一种。这个方法的唯一用途就i是返回当前值的字符串等价物
console.log('11'.toString());//'11'
console.log(true.toString());//'true'
toString方法常用于数值、布尔值、对象、字符串(字符串也是有toString()方法的,该方法只是简单的返回自身的一个副本)。null和undefined值没有toString方法
多数情况下,toString不接受任何参数。但是在对数值调用toString时可以传入一个底数参数,即用什么底数来输出数值的字符串表示 。默认情况下返回数字的十进制字符串表示,通过传入参数,可以获得二进制、八进制、十六进制等等其他任何有效基数的字符串表示
let num=10
console.log(num.toString());//'10'
console.log(num.toString(2));//'1010'
console.log(num.toString(8));//'12'
console.log(num.toString(10));//'10'
console.log(num.toString(16));//'a'
String便是另外一种转换为字符串的方式。如果你不确定一个值时不是null或者undefined。
String遵循以下规则:
- 如果值有toString方法,则调用toString(不传参数),并返回结果
- 如果值时null,返回 ‘ null ’
- 如果是undefined,返回 ‘ undefined ’
let value1=10
let value2=true
let value3=null
let value4
console.log(String(value1));//'10'
console.log(String(value2));//'true'
console.log(String(value3));//'null'
console.log(String(value4));//'undefined'
这里展示了四种情况,一个数值、一个布尔值、一个null、一个undefined。
数值和布尔值的转换结果和调用toString方法相同;
null和undefined没有toString方法,所以String()方法就直接返回了两个值的字面量文本。