对应视频分享:点击进入

基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null和undefined除外。它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下。

为什么基本数据类型也有方法:

有人说上面这都是基本操作,看这个干嘛,但是想一想,好像有点不对,这几个好像还有别的兄弟姐妹啊,如Undefined, Null,
Boolean, Number和String这几个,有谁去了解过这几个构造函数吗
接下来我们就要用到这个东西了,话说这几位,都是大英雄,这就是在每一个string的背后,都站着一位默默的String,其他也是一样的,实际上,这几位是一些特殊的引用类型,方便我们操作对应的基本类型。
这里涉及到了一个概念’‘基本包装类型’’ 我们来看一段简单的代码

var  message = 'helloworld'
var mymessage = message .substring(0,6)
console.log(mymessage) //   'hellow'

在上面这三行代码执行中,发生了很多事。
过程就类似于下面的代码

var _message  = new String(‘helloworld’) //通过String去创建一个实例对象
var mymessage = _message.substring(0,6)
//调用这个实例对象的方法,调用完毕之后销毁这个实例对象
console.log(mymessage )  //   'hellow'

在整个过程中,String这个构造函数一直没有出现在我们的视线中,它只是默默地去进行创建,被使用,然后销毁,哇哦,多么沉默的英雄啊。
那现在我们就明白了,基本数据类型调用的并不是它本身的方法,而是在执行这个方法的时候,去为它创建基本包装类型String,然后通过这个基本包装类型的值去创建一个实例对象,再调用这个实例对象的指定方法,最后再将这个实例对象销毁,嗯,基本包装类型也销毁。

toString()与valueOf()

0、object

备注:报错原因
因为实际上浏览器执行的可能是这样:
{}//空语句块
.toString()//另外一条错误的语句
如果要让 js 引擎认为 { 是一个对象字面量表达式的开始,一般就是加 (),这个时候,js 引擎就知道()里的是表达式,所以当做表达式来解析,所以
({}).toString()
就不会报错
1.array。

2.function

3.RegExp

4.Date

valueOf:除了date其他的都是返回数据本身

5.Boolean

6.number返回number字符串

原来 JavaScript采用 IEEE 754 的规范 双精度数字,JavaScript 中只有一种数字类型:基于 IEEE 754
标准的双精度 。它并没有为整数给出一种特定的类型,所以所有的数字都是小数。
123.toString() 等价于 123.0toString(),这样的语句当然行不通。 这也更合理解释了为什么123…toString()、123 .toString()、(123).toString()能够得到正确的返回值。

总结

valueOf偏向于运算,toString偏向于显示。
valueOf:除了date其他的都是返回数据本身

toString与valueOf区别相关推荐

  1. 彻底了解toString和valueOf区别

    toSring和valueof 两者都是对象的方法!前者返回对象的字符串,后者返回对象的原始值,如果没有原始值则返回对象本身! 1.toSring() 直接看代码 console.log((1).to ...

  2. 26.JavaScript对象和基础类型之间的转换、hint、Symbol.toPrimitive、toString、valueOf

    文章目录 对象-基础类型转换 写在前面 对象类型转换规则 对象类型转换的结果 Hint String Number Default 转换需要的三个对象方法 Symbol.toPrimitive() t ...

  3. 通过char[]获得字符串new String(chars) || chars.toString() || String.valueOf(chars)对比

    今天刷Leecode49. 字母异位词分组,遇到一个通过char[]获得字符串的问题,记录一下new String(chars) || chars.toString() || String.value ...

  4. js中toString()和String()区别详解

    转载自  js中toString()和String()区别详解 我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 ...

  5. java e.getmessage() null,浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别...

    Exception e中e的getMessage()和toString()方法的区别: 示例代码1: public class TestInfo { private static String str ...

  6. 一文看懂JS里隐式转换、toString() 和 valueOf()

    js-看懂隐式转换toString 和 valueOf js隐式类型转换 数值类型和布尔类型的相加 字符串和数字相加 隐式类型转换隐藏一些错误 isNaN() 对象的隐式转换 强制类型转换 - &qu ...

  7. 各种对象上的 toString 方法的区别和关联

    各种对象上的 toString 方法的区别和关联 问:请简述一下用于判断数据类型都有哪些方法? 答:巴拉巴拉--小魔仙 在判断数据类型的时候,有一种方式可以清晰直接地区分出所有的数据类型,即 Obje ...

  8. String.valueOf()方法与toString()方法的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 两者都是把ObJect对象转化为String 类型. 2.string.valueof()方法 ...

  9. 搞懂toString()与valueOf()的区别

    一.toString() 作用:toString()方法返回一个表示改对象的字符串,如果是对象会返回,toString() 返回 "[object type]",其中type是对象 ...

最新文章

  1. 多版本python共存,安装三方库到指定python版本 多Python版本和虚拟环境
  2. 【转】奴性哲学十句话,洗脑常用词!!!
  3. 成功解决ValueError: Shape of passed values is (1, 332), indices imply (1, 1)
  4. leetcode 650. 2 Keys Keyboard | 650. 只有两个键的键盘(暴力递归->傻缓存->DP)
  5. java 反射机制_基础篇:深入解析JAVA反射机制
  6. Tensorflow 迁移学习 识别中国军网、中国军视网Logo水印
  7. 7-63 情人节 (15 分)(c++stl)
  8. 【渝粤教育】国家开放大学2018年春季 0299-21T中国古代文学(1) 参考试题
  9. oracle日期时间
  10. 2021年中式面点师(中级)最新解析及中式面点师(中级)模拟考试题库
  11. python陆股通_【科普】沪股通、深股通、港股通、陆股通都是什么意思?
  12. 音质好的蓝牙耳机有哪些?盘点四款好音质蓝牙耳机
  13. SUS系统可用性量表
  14. 计算机图形学(一) 视频显示设备_7_光栅扫描系统
  15. TeamViewer的LAN局域网内连接
  16. 手机相册怎么拼图?快来和我学习新方法
  17. pdb和pdm文件有什么区别?
  18. 东北大学秦皇岛分校acm俱乐部第一次双周赛
  19. 使用window的cmd命令输出目录文件列表清单
  20. 过分依赖计算机的影响,技术的“两面性”过于依赖技术,会给生活带来什么影响?...

热门文章

  1. 广发信用卡电子账单读取
  2. 流动性因子(Liquidity Factor)——投资组合分析(EAP.portfolio_analysis)
  3. 怎么把优酷视频中的音频提取出来
  4. C语言整形数据的负数是如何存储的?
  5. OkHttp Post 限速上传
  6. 2021-05-07-今日活动方案分享
  7. uniwide服务器不能进入系统,AMD展示Barcelona处理器 四核领域反击英特尔
  8. 盘点im即时通讯开发中Android后台保活方案
  9. AUTOSAR R20-11 要来咯!
  10. 关键字替换的工具类实现