Javascript将变量转换为字符串代码分享

大家应该都知道,对于javascript,有3种不同方法可以将变量转换为字符串。这篇文章将详细介绍这些方法,并比较他们的优劣。本文主要和大家介绍关于javascript中将变量转换为字符串的三种方法,这三种方法分别是:value.tostring()、”” + value和string(value),文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧,希望能帮助到大家。

将变量转换为字符串的3种方法如下:

value.toString()

“” + value

String(value)

立即学习“Java免费学习笔记(深入)”;

当value为null或者undefined时,第1种方法就不行了。而方法2和方法3基本上是一样的。

“”+value: 将value与空字符串相加,即可将其转换为字符串。这种方法其实是一种稍微晦涩的技巧,可能会让别人难于理解开发者的意图。不过,这一点见仁见智,有些人偏爱这种方法。

String(value): 这种方法非常清晰:使用String()函数将value转换为字符串。不过,String()有两种不同用法,容易混淆,尤其对于Java开发者来说。当String()和运算符new一起作为构造函数使用时,它返回一个新创建的String对象;当不用new运算符调用String()时,它只把value转换成原始的字符串。这两者是非常不同的:

> String("Fundebug") === new String("Fundebug")false> typeof String("Fundebug")'string'> String("Fundebug") instanceof Stringfalse> typeof new String("Fundebug")'object'> new String("Fundebug") instanceof Stringtrue

登录后复制

事实上,将String()作为构造函数使用并不常见,因此仅使用它来转换字符串就好了。

“”+value与String(value)的细微差别

“”+value与String(value)都可以将value转换为字符串,它们是如何做到的呢?事实上,它们虽然结果相同,但是方法稍有区别。

将primitive基本类型转换为字符串

两种方法都使用内部函数ToString()将primitive基本类型转换为字符串。ToString()函数在ECMAScript 5.1 (§9.8)中定义了,但是并不能直接使用,因此称作内部函数。下面的表格显示了ToString()函数如何将primitive基本类型转换为字符串:

参数 结果

undefined”undefined”null”null”Boolean”true”或者 “false”Number将数字转换为字符串,例如: “1.765”String无需转换

将Object转换为字符串

转换为字符串之前,两种方法都会先将Object转换为primitive。不同的是,””+value使用内部函数ToPrimitive(Number) (除了date类型),而String(value)使用内部函数ToPrimitive(String) 。

ToPrimitive(Number) : 先调用obj.valueOf ,若结果为primitive则返回;否则再调用obj.toString() ,若结果为primitive则返回;否则返回TypeError。

ToPrimitive(String) : 与ToPrimitive(Number)类似,只是先调用obj.toString() ,后调用obj.valueOf() 。

可以通过以下示例了解区别,obj如下:

var obj = { valueOf: function() {  console.log("valueOf");  return {}; }, toString: function() {  console.log("toString");  return {}; }};

登录后复制

调用结果:

> "" + objvalueOftoStringTypeError: Cannot convert object to primitive value> String(obj)toStringvalueOfTypeError: Cannot convert object to primitive value

登录后复制

它们的结果相同

“”+value与String(value)虽然不同,但是我们很少能感觉到。因为,大多数object使用默认的valueOf() ,它返回对象本身:

> var x = {}> x.valueOf() === xtrue

登录后复制

由于valueOf()返回值并非primitive,因此ToPrimitive(Number)会跳过valueOf() ,而返回toString()的返回值。这样,与ToPrimitive(String)的返回值就一样了。

当object是Boolean、Number或者String实例时,valueOf()将返回primitive。这就意味着两者的计算过程是这样的:

ToPrimitive(Number) :valueOf()返回primitive值,然后使用ToString()转换为字符串。

ToPrimitive(String) : toString()通过ToString()函数将primitive值转换为字符串。

可知,虽然计算过程不同,但是它们的结果是一样的。

结论

那么你该选择哪种方法呢?如果你可以确保value值不是null和undefined,那么不妨使用value.toString() 。否则,你只能使用””+value 和String(value) ,它们基本上是一样的。

相关推荐:

JavaScript根据本地时间把Date对象转换为字符串的方法toLocaleString()

Javascript将变量转换为字符串方法介绍

php 将时间差转换为字符串提示实例详解

以上就是Javascript将变量转换为字符串代码分享的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2787027.html

(0)
上一篇 2025年3月8日 18:00:31
下一篇 2025年3月8日 18:00:41

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS中的this、apply、call、bind实例分享

    this 的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象,来,跟着我朗读三遍:this 永远指向最后调用它的那个对象,this 永远指向最后调用它的那个对象,this 永远指向最后调…

    编程技术 2025年3月8日
    200
  • JavaScript中的this规则及this对象用法实例

    想要确定this里规则是什么,几条规则确定函数里的 this 是什么。想确定 this 是什么其实非常简单。总体的规则是,通过检查它的调用位置,在函数被调用的的时候确定 this。它遵循下面这些规则,接下来以优先级顺序说明。 规则 1、如果…

    编程技术 2025年3月8日
    200
  • 如何在Node.js中使用原生ES模块

    从版本 8.5.0 开始,node.js 开始支持原生 es 模块,可以通过命令行选项打开该功能。新功能很大程度上得归功于 bradley farias。本文主要和大家介绍在 node.js 中使用原生 es 模块方法解析,还有部分内容的链…

    编程技术 2025年3月8日
    200
  • 实例详解js中ajax访问

    本文主要和大家介绍原生js中ajax访问的实例详解的相关资料,希望通过本文大家能够掌握理解这部分内容,需要的朋友可以参考下,希望能帮助到大家。 原生js中ajax访问的实例详解 form表单中 登录名: 失去光标即触发事件 function…

    编程技术 2025年3月8日
    200
  • angluarjs过滤并替换关键字功能实现代码

    本文主要和大家大家详细介绍angluarjs实现过滤并替换关键字小功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 html样式       {{ keytext|wordFilter:”#” }} 登录后复制 /…

    2025年3月8日
    200
  • JavaScript数组去重的几种方法分享

    数组去重,一般需求是给你一个数组,调用去重方法,返回数值副本,副本中没有重复元素。一般来说,两个元素通过 === 比较返回 true 的视为相同元素,需要去重,所以,1 和 “1” 是不同的元素,1 和 new nu…

    编程技术 2025年3月8日
    200
  • js实现抽奖系统功能代码分享

    本文主要和大家详细介绍了一个关于抽奖系统的题目之js抽奖系统功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助大家运用js开发一个抽系统。 要求实现功能: 1.点击左侧按键,开始抽奖,点击右侧按键,停止抽奖; 2.敲击回车键…

    编程技术 2025年3月8日
    200
  • JavaScript事件处理程序详解

    本文主要和大家详细介绍javascript事件处理程序的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 nbsp;html>    DOM0级DOM2级 function show() { alert(…

    编程技术 2025年3月8日
    200
  • 全面讲解js中的原型

    在讲js的原型之前,必须先了解下object和function。object和function都作为js的自带函数,object继承自己,funtion继承自己,object和function互相是继承对方,也就是说object和funct…

    2025年3月8日
    200
  • Node.js、jade生成静态html文件实例

    本文主要为大家带来一篇node.js+jade抓取博客所有文章生成静态html文件的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 项目结构: 立即学习“前端免费学习笔记(深入)”; …

    2025年3月8日
    200

发表回复

登录后才能评论