首先,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. LeetCode-Divdend two Integers

    题目: Divide two integers without using multiplication, division and mod operator. 思路分析 二分法.将除数不断增倍,而结 ...

  2. 动态编译添加php模块

    注意:转载请注明出处:http://www.programfish.com/blog/?p=85 在很多时候我们用linux里搭建web服务器的时候会需要编译安装php套件,而在编译安装后可能又会需要 ...

  3. IOS 推送原理

    最近两天在研究ios的消息推送机制.研究这个东西,还是充满兴趣的. Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章 ...

  4. Cocos2d-x程序Windows下VC中文乱码的解决(用MultiByteToWideChar进行转换,VC2010有非常厉害的execution_character_set)

    Cocos2d-x默认字符串常量编码都是UTF8的,而Windows中的VC默认都是跟系统相同,比如简体Windows是GB2312或者GBK.繁体就是BIG5编码.而我们大多数中国人用VC编译出来的 ...

  5. 优化C#程序的48种方法

    一.用属性代替可访问的字段 1..NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处: 2.在属性的get和set访问器重可使用lock添加多线程的支持. 二.readonly(运行时常量) ...

  6. UESTC_方老师和农场 2015 UESTC Training for Graph Theory<Problem L>

    L - 方老师和农场 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  7. 减少GC开销的5个编码技巧

    在这篇文章中,我们来了解一下让代码变得高效的五种技巧,这些技巧可以使我们的垃圾收集器(GC)在分配内存以及释放内存上面,占用更少的CPU时间,减少GC的开销.当内存被回收的时候,GC处理很长时间经常会 ...

  8. 在eclipse中使用svn

    作为一名程序员,svn是比较常用也必然会使用到的一个工具,它的全拼为Subversion,是一个开源的版本控制系统,可以对每次修改的文件和目录进行准确记录,以便在使用的时候及时提取.本文主要介绍如何在 ...

  9. androidHandler讲解

    秒钟还没有完成的话,会收到Android系统的一个错误提示  "强制关闭".  这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是 ...

  10. wifi_uplink脚本分析

    ~ >: vim apps/tools/wifi_uplink  #!/bin/sh # Copyright (C) 2012 GuoWenxue <guowenxue@gmail.com ...