文章目录
一. 基本数据类型中的字符串
1.1 定义
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。通常用单引号 / 双引号 / 反引号括起来,或者结合嵌套使用。
var a = "hello world";//双引号
var a = 'hello world';//单引号
var a = `
hello world
` ;//反引号(会打印出换行)
var json = '{"name":"zevin","age":21}';//单双引号交替使用
分别的打印结果为:
hello world
hello world
hello world
{
"name":"zevin","age":21}
1.2 转义
反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
- \0 :null(\u0000)
- \b :后退键(\u0008)
- \f :换页符(\u000C)
- \n :换行符(\u000A)
- \r :回车键(\u000D)
- \t :制表符(\u0009)
- \v :垂直制表符(\u000B)
- \ ’ :单引号(\u0027)
- \ " :双引号(\u0022)
- \ \ :反斜杠(\u005C)
console.log('Hi,I\'m zevin!');
// Hi,I'm zevin!
反斜杠还还有三种特殊的方法来表示特殊字符:
- \HHH —— 反斜杠后跟三个八进制数(000到377),最多可表示256种字符;
- \xHH —— 反斜杠后跟十六进制数(00到FF),最多可表示256种字符;
- \uHHHH —— 反斜杠后跟四个十六进制数(0000到FFFF);
比如版权符号(©)的表示:
'\251' // "©"
'\xA9' // "©"
'\u00A9' // "©"
'\172' === 'z' // true
'\x7A' === 'z' // true
'\u007A' === 'z' // true
反斜杠也支持自身转义:
"Left \\ Right"
// "Left \ Right"
1.3 字符串与数组
字符串与数组有一个很相似的地方,就是都可以通过方括号运算符来访问某个位置的字符。
var str = 'zevin';
str[0] // "z"
str[1] // "e"
str[3] // "i"
// 直接对字符串使用方括号运算符
'zevin'[1] // "e"
如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined
。
'abc'[3] // undefined
'abc'[-1] // undefined
'abc'['x'] // undefined
1.4 length 属性
length属性返回字符串的长度。
var s = 'hello';
s.length // 5
同样该属性也是无法改变的,但是也不会报错。
s.length = 3;
s.length // 5
s.length = 7;
s.length // 5
二. String对象
2.1 概述
String对象也是 JavaScript 原生提供的三个包装对象之一,用来生成字符串对象的构造函数。
var s1 = 'abc';
var s2 = new String('abc');
typeof s1 // "string"
typeof s2 // "object"
同时字符串对象也是四大类数组对象之一。并不是真正的数组。
new String('abc')
// String {0: "a", 1: "b", 2: "c", length: 3}
'abc'[1] // 'b'
'abc'.length // 3
'abc' instanceof Array // false
除了用作构造函数,String对象还可以当作工具方法使用,将任意类型的值转为字符串。
String(true) // "true"
String(5) // "5"
2.2 静态方法 —— String.fromCharCode()
fromCharCode()
方法的参数是一个或多个数值,代表 Unicode 码点,返回值是这些码点组成的字符串。
String.fromCharCode() // ""
String.fromCharCode(97) // "a"
String.fromCharCode(104, 101, 108, 108,