定义
字符串是由0个或者多个字符构成的,必须被包在双引号或者单引号里
以下两种声明均可
var s1 = 'string';
var s2 = "string";
注意:引号是成对出现的
规则
-
引号使用
若字符串内有引号,则最好让外部的引号与字符串内的引号不同
var s = "I'm string";
若希望内部的引号与外部的引号相同,则需要在内部的引号前使用转义符\
对这个字符进行转义(escaping)
var s = 'I\'m string';
-
单行和多行
字符串只能写在一行内,如果分为多行,则会报错
var s = 'a
b
c' //Uncaught SyntaxError: Invalid or unexpected token
连接运算符“+”可以连接多个单行字符串,将长字符串拆成多行书写,输出的时候也是单行
var s = 'Long'
+ 'long'
+ 'long'
+ 'string';
s //Longlonglongstring
如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠“\”
var s = 'Long \
long \
long \
string';
s //Long long long string
注意:反斜杠""后必须是换行符,而不能有其他字符(比如空格),否则会报错
字符串与数组
-
相似
字符串可以被视为字符数组,因此可以使用数组的方括号运算符[]
,用来返回某个位置的字符(位置编号从0开始)
var s = 'string';
st[0]; //s
s[2]; //r
s[5]; //g
如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined
var s = 'string';
s[6]; //undefined
s[-1]; //undefined
s['1']; //undefined
-
不同
字符串中的单个字符利用数组方法无法修改
var s = 'string';
delete s[0];
s; //string
s[1] = 'a';
s; //string
s[5] = '!';
s; //string
//上面代码中,字符串内部的单个字符无法改变和增删,这些操作会默默地失败
字符串无法直接使用数组的方法,必须通过call方法间接使用
var s = 'string';
s.join(' '); //TypeError: s.join is not a function
Array.prototype.join.call(s,' '); //"s t r i n g"
//上面代码中,如果直接对字符串使用数组的join方法,会报错不存在该方法
//但是可以通过call方法,间接对字符串使用join方法
字符串是只读的,那些会改变原数组的方法,比如push()、sort()、reverse()、splice()都对字符串无效,只有将字符串显式转为数组后才能使用