首先,String()和toString()方法都是将其它类型的变量转换为字符串的方法。但两者存在一定的区别:

x.toString(): 无法转换null和undefined:

来看下面的小例子:

var a=123;
var b=true;
var c;
var d=null;
console.log(a.toString());
console.log(b.toString());
console.log(c.toString());
console.log(d.toString());

运行上面的代码我们得到下面的结果:

123

1

Uncaught TypeError: Cannot read property 'toString' of undefined(…)

Uncaught TypeError: Cannot read property 'toString' of null(…)  

通过上面的答案我们不难看出第一行和第二行都是有输出结果的分别为"123"和"1",如果不能确定该结果是否为string类型的我们可以使用typeof()方法来查看数据的类型,该方法返回值为数据类型的关键字。

var b=123;
typeof(b.toString());//返回结果为"string"

第三行的运行结果报错了,Uncaught TypeError: Cannot read property 'toString' of undefined(…)这句话的意思为:未捕获:无法读取属性的toString定义,也就是说我们对于c这个变量没有赋值,不能找到该值,所以不能转换。

同样的第四行代码也是出错的,Uncaught TypeError: Cannot read property 'toString' of null这句话的意思未捕获TypeError:无法读取属性的toString null,意思为类型为null的变量不能应用该方法。

为了解决上面的为题我们自己重写toString()方法,代码如下:

function String(x){
if(x===undefined){
return "undefined";
}else if(x===null){
return "null";
}else{
return x.toString();
}
}

通过上面的代码我们很好的规避了刚才发生错误的两个地方。  

下面我们来看String()方法:

var a=123;
var b=true;
var c;
var d=null;
console.log(String(a));
console.log(String(b));
console.log(String(c));
console.log(String(d));

运行上面代码我们不难得到下面的四个值:

123
 true
 undefined
 null

通过相同代码的比较,我们可以得出String()方法较toString()方法应用范围上要更加广泛。  

  

String()与toString()区别和应用的更多相关文章

  1. (String)、toString()与String.valueOf()的区别

    (String).Object.toString()正常情况下跟String.valueOf()没有区别. 但当Object是null的时候.toString会抛出异常.valueOf返回" ...

  2. (String)、toString、String.valueOf的区别

    String.valueOf()它可以将JAVA基本类型(int,double,boolean等)和对象(Object)转换成String型toString()是对象的方法,它可以将该对象转换成Str ...

  3. 浅谈JS中String()与 .toString()的区别

    我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 1..toString()可以将所有的的数据都转换为字符串,但 ...

  4. byte[] 的toString() 和 new String(byte[]) 的区别

    今天在Android上测试压缩和解压缩. 获得压缩后的byte[]数组后,直接用 byte[].toString()方法取得字符串. 然后用这个字符串再反向来解压缩,还原数据.却发现还原回来的字符串有 ...

  5. JavaScript之String()和.toString()

    JS中 转换字符串的方法有两个 一个String(),一个.toString(). 通常情况下 这两种使用没有太大的区别.但是需要注意几点: undefined: toString() var tes ...

  6. String Buffer和String Builder的区别(转)

    相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类.St ...

  7. String()与 toString()

    我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 1..toString()可以将所有的的数据都转换为字符串,但 ...

  8. C#中 StringBuilder类 与 String类的区别---(转)

      在找工作的时候,去了些公司,避免不了要面试和笔试.不过一般最起初的是笔试.我印象中有这样有一道题目:StringBuilder类与 String类的区别?那时候我不太清楚这两个类的区别,今天在看代 ...

  9. String,StringBuffer,StringBudilder区别--2019-04-13

    String,StringBuffer,StringBudilder区别: 1String 是字符串常量,创建内容不可以变, final修饰意味着String类型不能被继承,减少被修改的可能,从而最大 ...

随机推荐

  1. 连接SQLite 创建ADO.net实体类

    0.开发环境 win10,vs2013-x64 1.安装: sqlite-netFx451-setup-bundle-x86-2013-1.0.102.0.exe 注意事项:选在VisualStudi ...

  2. 对面向对象程序设计(OOP)的认识

    前言 本文主要介绍面向对象(OO)程序设计,以维基百科的解释: 面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发 ...

  3. python 杂记

    class TestA(object): def __init__(self): print("A is initing"); def foo(self): print(" ...

  4. 数据画图 jpgraph & chart.js

    今天想到要研究下“用图表的形式来呈现数据”这个主题.对比了下两种实现的方法: 方法一:通过php代码在服务器端生成图像,再将图像传回客户端.使用jpGraph类库. 方法二:通过js和html5技术, ...

  5. Truck History--poj1789

    Truck History Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 21534   Accepted: 8379 De ...

  6. 实现android apk反编译后代码混淆

    通常情况下我们需要对我们开发的android代码进行混淆,以免代码在反编译时暴露敏感信息及相关技术代码: 反编译测试工具:onekey-decompile-apk-1.0.1. 在高级版本的adt创建 ...

  7. Facebook公开其Hadoop与Avatarnode代码——有效解决Namenode顽疾

    Google在2004年创造了MapReduce,MapReduce系统获得成功的原因之一是它为编写需要大规模并行处理的代码提供了简单的编程模式.MapReduce集群可包括数以千计的并行操作的计算机 ...

  8. ORA-19502: write error on file "", blockno (blocksize=)/linux下磁盘空间满了解决办法--Virtualbox

    今天,在测试环境启动数据库时,报错: SQL> startup; ORACLE instance started. Total System Global Area  285212672 byt ...

  9. Oracle 10g RAC启动与关闭命令

    一. 检查共享设备 一般情况下, 存放OCR 和 Voting Disk 的OCFS2 或者raw 都是自动启动的. 如果他们没有启动,RAC 肯定是启动不了的. 1.1 如果使用ocfs2的,检查o ...

  10. Android 文件操作之openFileOutput

    openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它.创建的文件保存在/data/data/<package ...