3.4.6 Javascript之String类型

String

String类型用来表示零个或多个16位的Unicode字符组成的字符序列,即字符串

原文中的这句话说的很直白,但是里面有很多内容值得深入思考(这里有讲解

字符字面量

特殊的字符字面量也叫转义序列,需要注意的是:

console.log("\'"); //这样才能输出单引号
console.log("\""); //这样才能输出双引号
console.log("\\"); //这样才能输出反斜杠

\n 换行 \t 制表符 \r 回车 \f 进纸 这几个是非打印字符
\xnn 以十六进制代码表示的字符 n(0-f)
\unnnn 以十六进制代码表示的Unicode字符 n(0-f)

这里有个值得考虑的事情就是 \xnn 与 \unnnn 有什么关联和区别?\xnn 能表示的字符数量肯定是不及\unnnn能表示的多,百度之后发现\xnn对应的是ASCII编码标准,\unnnn对应的是Unicode编码标准,如有更深的理解欢迎科普

任何字符串的长度都可以通过起其length属性获取,如果字符串中包含双字节字符,那么字符串的length属性就不能精确的返回字符串中的字符数量了

//js中的字符有单字节的也有双字节的,有的字符是由两个16位的Unicode码编码的
console.log("test".length);       // 4
console.log("这是我的?".length);  // 6
字符串的不可变性
//这里先定义了str变量初始化赋值为“test”字符串,这里的不可变性说的是执行第二句的时候是将str的值和“my ”字符串拼接成“my test”这个字符串放在了新的内存空间里,然后str再指向这个新的空间地址,原来的“test”字符串的地址里的值并未发生变化,然后垃圾回收器发现“test”字符串没有变量引用后就会删除它
var str = "test";
str = "my " + str;
其他类型转换为String

数值、布尔、字符串、对象都有toString()方法,null和undefined没有

//数值转string,保存Number类型值的变量调用toString()方法的时候可以指定输出值的基数即进制
var num = 20;
num.toString(); // "20"
num.toString(16); // "14"
//布尔值转string
var bool = true;
bool.toString(); // "true"
//对象转string,书中没怎么说到,感觉比较复杂,下面列举了几个简单的代表性对象
var obj1 = [1,2,3], 
    obj2 = {age: 20, name: "ccc"},
    obj3 = function(){console.log("obj3");return true;},
    obj4 = new Object("123");
console.log(obj1.toString()); // "1,2,3"
console.log(obj2.toString()); // "[object Object]"
console.log(obj3.toString()); // 'function (){console.log("obj3");return true;}'
console.log(obj4.toString()); // "123"

别的类型转换为字符串类型,在不知道要转换的值是否是null或者undefined的时候更推荐使用String()方法

  • 如果要转换的值有toString()方法,就调用它
  • 如果是null,就返回null
  • 如果是undefined,就返回undefined

如此看来,String()方法应该是封装了toString()方法,然后加上了null和undefined的输出(null和undefined没有toString()方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值