首先,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. hdu 1196

    Problem Description Given an positive integer A (1 <= A <= 100), output the lowest bit of A. F ...

  2. OpenCV——手势识别

    使用ANN神经网络训练数据后进行手势识别. #include "header.h" int main() { ; //训练每类图片数量 ; //训练类数3:石头剪刀布 ; ; st ...

  3. NDK编译Python2.7.5

    [背景] 网上有一些ndk编译python的做法,但按照教程做总是不成功,可能是环境版本不一样,导致很多地方的配置都不成功. 网上的教程大多只有做法,没有解释,即使按照教程编译成功,很多细节都不知道为 ...

  4. Dede修改文章默认标题长度,让标题全显示

    第一步首先你要进入dedecms后台,系统——系统基本参数——其他选项——文档标题最大长度——在这修改为200或更大(其实200应该是足够了). 第二步进入phpmyadmin,点击dede_arch ...

  5. destoon实现资讯信息前面调用它所属分类的方法

    有时候我们需要在一些信息前面添加他所属的分类,让他显示出来,本文介绍的方法虽然有些不具有通用性,但是可以实现这一效果,代码如下,供大家参考: <!--{php null=tag("mo ...

  6. 如何让checkbox复选框只能单选

    function框架div 如何让checkbox复选框只能单选 在项目开发中遇到一个这样的问题,要让一列复选框架在任何时间段内只能选择一个. 有人说怎么不用单选框了,因为单选框一旦选择了就不能取消选 ...

  7. Linux_Shell type

    Recommendation is to use the bash shell, because he is strong enough, and absorbed the useful proper ...

  8. HDU 3507 PrintArticle (单调队列优化)

    题意:给出一个数列C,一个数字M,将数列分成若干段,每段的代价为(设这段的数字为k个): dp[i]=min(dp[j]+(sum[i]-sum[j])*(sum[i]-sum[j])+M) 若j1& ...

  9. 《Programming WPF》翻译 第9章 5.默认可视化

    原文:<Programming WPF>翻译 第9章 5.默认可视化 虽然为控件提供一个自定义外观的能力是有用的,开发者应该能够使用一个控件而不用必须提供自定义可视化.这个控件应该正好工作 ...

  10. SqlServer计算周岁的函数

    CREATE Function Dbo.GetAge ( @birthday datetime, @now datetime ) Returns int As Begin Declare @Age i ...