返回顶部
首页 > 资讯 > 前端开发 > JavaScript >js中toString()函数与valueOf()函数使用与区别
  • 196
分享到

js中toString()函数与valueOf()函数使用与区别

2024-04-02 19:04:59 196人浏览 独家记忆
摘要

目录 一、?前言二、toString() 函数三、valueOf()函数小结:四、特殊情况1、引用类型转换为 String 类型2、引用类型转换为 Number 类型&nb

 一、?前言

在等于运算符中,如果比较的内容包含对象类型数据,则会涉及隐式转换,那么就会调用toString()函数和valueOf()函数,下面我们将会了解到关于这两个函数的基本概念和使用场景。

二、toString() 函数

toString() 函数的作用是把一个逻辑值转换为字符串,并返回结果。

console.log((1).toString());//1
console.log((10).toString(2))//1010
console.log(("1").toString());//1
console.log((false).toString());//false
console.log(({p:1}).toString());//[object,object]
console.log((undefined).toString());//报错
console.log((null).toString());//报错
console.log((function(){}).toString());//function(){}
console.log([1,2,3,4].toString());//1,2,3,4
console.log((new Date()).toString())//Fri Jul 03 2020 17:20:11 GMT+0800 (中国标准时间)

javascript中,Object,Array,Function,Date等类型都实现了自定义的toString()函数。

  • Object 类型数据的 toString() 函数默认的返回结果是 "[object Object]",当我们自定义新的类时,可以重写 toString() 函数,返回可读性更高的结果。
  • Array 的 toString() 函数返回值为以逗号分隔构成的数组成员字符串。数组也是对象,那么为什么数组返回的是对应的字符串而不是对象,其实数组覆盖了Object.toString方法,然后将连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素(相当于Array.join())
  • Function 的 toString() 函数返回值为函数的文本定义
  • Date 的 toString() 函数返回值为具有可读性的时间字符串

三、valueOf()函数

valueOf() 函数的作用是返回最适合引用类型的原始值,如果没有原始值,则会返回引用类型自身。

console.log((1).valueOf());//1
console.log((10).valueOf(2))//报错
console.log(("1").valueOf());//1
console.log((false).valueOf());//false
console.log(({p:1}).valueOf());//{p:1}
console.log((undefined).valueOf());//报错
console.log((null).valueOf());//报错
console.log((function(){}).valueOf());//function(){}
console.log([1,2,3,4].valueOf());//[1,2,3,4]
console.log((new Date()).valueOf());//1593767848260
  • Object 类型数据的valueOf()函数默认的返回结果是"{}",即一个空的对象字面量。
  • Array 的valueOf()函数返回的是数组本身
  • function 的valueOf()函数返回的是函数本身
  • Date 的valueOf()函数返回的是指定日期的时间戳

小结:

  • toString() 返回的是字符串,而 valueOf() 返回的是原始值,没有原始值返回对象本身
  • undefined 和 null 都没有 toString() 和 valueOf() 方法
  • Date 类型的 toString() 返回的表示时间的字符串;valueOf() 返回的是现在到1970年1月1日的毫秒数(时间戳)
  • Number 类型的 toString() 方法可以接收转换基数,返回不同进制的字符串形式的数值;而 valueOf()方 法无法接受转换基数

四、特殊情况

如果一个引用类型的值既存在 toString() 函数又存在 valueOf() 函数,那么在做隐式转换时,会调用哪个函数呢?这里我们可以概括成两种场景,分别是引用类型转换为 String 类型,以及引用类型转换为 Number 类型。

1、引用类型转换为 String 类型

一个引用类型的数据在转换为 String 类型时,一般是用于数据展示,转换时遵循以下规则:

  • 如果对象具有 toString() 函数,则会优先调用 toString() 函数。如果它返回的是一个原始值,则会直接将这个原始值转换为字符串表示,并返回该字符串。
  • 反之,则会再去调用 valueOf() 函数,如果 valueOf() 函数返回的结果是一个原始值,则会将这个结果转换为字符串表示,并返回该字符串。
  • 如果通过 toString() 函数或者 valueOf() 函数都无法获得一个原始值,则会直接抛出类型转换异常。

2、引用类型转换为 Number 类型

一个引用类型的数据在转换为 Number 类型时,一般是用于数据运算,转换时遵循以下规则:

  • 如果对象具有 valueOf() 函数,则会优先调用 valueOf() 函数,如果 valueOf() 函数返回一个原始值,则会直接将这个原始值转换为数字表示,并返回该数字。
  • 反之,则会再去调用 toString() 函数,如果 toString() 函数返回的结果是一个原始值,则会将这个结果转换为数字表示,并返回该数字。
  • 如果通过 toString() 函数或者 valueOf() 函数都无法获得一个原始值,则会直接抛出类型转换异常。

 到此这篇关于 js中toString()函数与valueOf()函数使用与区别的文章就介绍到这了,更多相关 js toString()函数与valueOf()函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: js中toString()函数与valueOf()函数使用与区别

本文链接: https://lsjlt.com/news/146070.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • js中toString()函数与valueOf()函数使用与区别
    目录 一、前言二、toString() 函数三、valueOf()函数小结:四、特殊情况1、引用类型转换为 String 类型2、引用类型转换为 Number 类型&nbs...
    99+
    2024-04-02
  •  js中toString()函数与valueOf()函数怎么使用
    本篇内容介绍了“ js中toString()函数与valueOf()函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&n...
    99+
    2023-06-30
  • C++ 虚函数与纯虚函数的使用与区别
    目录什么是虚函数:虚函数的注意事项:纯虚函数纯虚函数的注意事项:虚函数与纯虚函数区别什么是虚函数: 虚函数 是在基类中使用关键字 virtual 声明的函数,在C++ 语言中虚函数...
    99+
    2024-04-02
  • python中format函数与round函数的区别
    目录前言不同之处round函数进位原则示例format函数示例总结前言 在对数据进行处理时我们常常会用到format与round函数。二者都能保留若干位小数,但在处理过程上稍有不同。...
    99+
    2024-04-02
  • PHP 函数与 C++ 函数的区别
    php和c++++函数处理方式的区别主要体现在:函数签名:php无类型安全性,c++具有类型安全性。函数定义:php使用function关键字定义,c++使用数据类型关键字定义。参数传递...
    99+
    2024-04-24
    c++ php
  • PHP 函数与 F# 函数的区别?
    php和f#函数的区别在于:定义:php使用function关键字,f#使用let关键字。类型签名:php可选,f#必须指定。返回类型:php可省略,f#必须明确。参数传递:php按引用...
    99+
    2024-04-25
    php 函数 f# 函数
  • PHP 函数与 Scala 函数的区别?
    php 和 scala 函数有以下关键差异:语法:php 使用 function,scala 使用 def,后者需要类型注释。类型注释:scala 强制指定类型注释,php 则否。默认值...
    99+
    2024-04-25
    php 函数 scala 函数
  • PHP 函数与 Kotlin 函数的区别?
    php 与 kotlin 函数的区别:php 函数返回类型可选、按值传递参数、支持变量数量参数、可声明为静态函数、允许匿名函数;kotlin 函数返回类型明确、参数可按值或引用传递、不支...
    99+
    2024-04-25
    php kotlin
  • PHP 函数与 Rust 函数的区别?
    php 和 rust 函数的主要区别:参数传递:php 按值传递,rust 按引用传递。返回值:php 返回一个值,rust 可使用元组返回多个值或使用 result 枚举返回错误。 ...
    99+
    2024-04-25
    php rust
  • PHP 函数与 Erlang 函数的区别?
    php 函数与 erlang 函数的关键区别:语法:php 使用 c 风格语法,括号中包含参数,而 erlang 使用后缀表示法,参数跟在函数名称之后。返回值:php 函数显式返回一个值...
    99+
    2024-04-25
    php erlang
  • PHP 函数与 Go 函数的区别?
    php和go函数的主要区别包括:类型化(go强制,php可选)、默认值(php可设置,go不可)、可见性(php默认公开,go通过关键字指定)、匿名函数(php支持,go不支持)、返回多...
    99+
    2024-04-25
    go php
  • PHP 函数与 R 函数的区别?
    php和r函数在语法、数据类型、数据结构和函数作用域上有以下差异:1. 语法:php函数遵循c式语法,而r函数使用s式语法。2. 数据类型:php是弱类型语言,而r是强类型语言。3. 数...
    99+
    2024-04-25
    php r 作用域
  • PHP 函数与 Java 函数的区别?
    php 和 java 函数的主要区别在于:php 函数通过引用传递参数,而 java 函数通过值传递参数。php 函数通常没有明确的类型签名,而 java 函数具有严格的类型签名。php...
    99+
    2024-04-25
    java php
  • PHP 函数与 Julia 函数的区别?
    php和julia函数的主要区别在于:语法:php函数使用“function”关键字声明,而julia函数使用“function”或“base.function”关键字并遵循不同语法。类...
    99+
    2024-04-25
    php julia
  • PHP 函数与 Python 函数的区别?
    php 与 python 函数的主要区别在于参数传递方式(php 值传递,python 引用传递)和返回值机制(php 通过 return 语句,python 通过最后一行表达式隐式返回...
    99+
    2024-04-25
    python php
  • PHP 函数与 C# 函数的区别?
    php和c#函数的区别:概念:php函数用于特定任务,c#函数用于封装代码。语法:php函数使用function关键字,c#函数使用public static void关键字。返回类型:...
    99+
    2024-04-25
    php 函数 c# 函数 c# 作用域
  • PHP 函数与 Elixir 函数的区别?
    php和elixir函数在定义、类型系统、参数传递和返回值方面有所不同。php函数类型系统松散,参数传递按值或引用,可以指定或省略返回值类型,并支持可选参数。elixir函数类型系统强类...
    99+
    2024-04-25
    php elixir
  • PHP 函数与 Elm 函数的区别?
    php 和 elm 函数的差异:php 函数使用 function 关键字声明,elm 函数使用 val 或 fun 关键字声明。php 函数使用弱类型系统,而 elm 函数使用强类型系...
    99+
    2024-04-25
    php elm
  • PHP 函数与 Ruby 函数的区别?
    php 和 ruby 函数处理方式的区别在于:函数定义:php用function,ruby用def;参数处理:php用圆括号,参数可按值或引用传递;ruby也用圆括号,但参数仅按值传递;...
    99+
    2024-04-26
    php ruby
  • PHP 函数与 JavaScript 函数的区别?
    php和javascript函数的区别:上下文:php在服务器端执行,javascript在客户端浏览器中执行。语法:php函数使用function关键字声明,javascript函数使...
    99+
    2024-04-25
    php 作用域
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作