JS中String、string和““的区别

1、new String() 返回的是一个 String对象:

var str = new String("csdn"); //返回的类型为object--->String对象

表示类型引用,构造函数新建对象,在运行时创建

2、String() 直接调用 String 也可以返回一个 string 类型

var str = String("csdn"); //返回的类型为string类型

表示类型转换,类比的还有Number、Boolean、Object ..

String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别:

  1. .toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined;.toString() 括号中的可以写一个数字,代表进制,对应进制字符串
  2.  String()可以将null和undefined转换为字符串,但是没法转进制字符串

3、"" 返回一个 string 类型

var username = "muzidigbig"; //返回的类型为string类型

 直接="xx"是看以前有没有同样的字符串,有就直接引用,没有才创建(设计模式中的Flyweight)。编译时创建。更优

事实上任何一个字符串常量都是一个String对象,可以将其直接作为对象来使用。

4、javasript的话,有个最重要的区别:(重要!!!)

javasript的话,有个最重要的区别:(重要!!!)

如果你在之前定义了
function String(){
    ...
}
那么new String()就不是创建系统默认的字符串类型了。
这个区别有时候会导致安全问题,比如:
var outPtr;
function String(x){
    outPtr = x;
}
如果你的代码中使用了new String(),利用这个代码有可能构造一个跨域攻击。而使用""是安全的。

 

最主要的区别是存储位置不同和创建位置不同! 
    “”创建的字符串存储在方法区的常量池中,而new String()是在堆中创建一个对象并把这个对象的句柄返回给引用!“”是在编译时创建,new String()是在运行时创建!如果两者进行“==”比较,都相等;但如果是通过“===”比较,则new String()的结果不相等,会重新开辟空间存储对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值