1.概述
字符串定义就是0个或者多个排在一起的字符,放在单引号或双引号中
示例:
'abc'
"abc"
单引号内部可以使用双引号,双引号内部也可以使用单引号
'key = "value"'
"It's a long journey"
如果要在单引号字符串的内部,使用单引号(或者在双引号字符串的内部,使用双引号),就必须在内部的单引号(或者双引号)前面加上反斜杠,用来转义
示例:
'Did she say \'Hello\'?'
// "Did she say 'Hello'?"
"Did she say \"Hello\"?"
// "Did she say "Hello"?"
2.转义
反斜杠\在字符串中有特殊含义,也叫转义符
\0 null(\u0000)
\b 后退键(\u0008)
\f 换页符(\u000C)
\n 换行符(\u000A)
\r 回车键(\u000D)
\t 制表符(\u0009)
\v 垂直制表符(\u000B)
\' 单引号(\u0027)
\" 双引号(\u0022)
\ 反斜杠(\u005C)
示例:
console.log('1\n2')
// 1
// 2
如果在非特殊字符前面使用反斜杠,则反斜杠会被省略
'\a'
// "a"
字符串与数组
字符串也可以被看做是字符数组
var s = 'hello';
s[0] // "h"
s[1] // "e"
s[4] // "o"
// 直接对字符串使用方括号运算符
'hello'[1] // "e"
字符串与数组的相似性仅此而已。实际上,无法改变字符串之中的单个字符
var s = 'hello';
delete s[0];
s // "hello"
s[1] = 'a';
s // "hello"
s[5] = '!';
s // "hello"
上面代码表示,字符串内部的单个字符无法改变和增删,这些操作会默默地失败
字符串也无法直接使用数组的方法,必须通过call方法间接使用
var s = 'hello';
s.join(' ') // TypeError: s.join is not a function
Array.prototype.join.call(s, ' ') // "h e l l o"
上面代码中,如果直接对字符串使用数组的join方法,会报错不存在该方法。但是,可以通过call方法,间接对字符串使用join方法
3.length属性
length属性返回字符串长度
示例:
var s = 'hello';
s.length // 5
s.length = 3;
s.length // 5
s.length = 7;
s.length // 5