字符串
定义
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
'abc'
"abc"
单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。
'key = "value"'
"Let's go!"
字符串默认只能写在一行内,分成多行将会报错。
'a
b
c'
// 报错
如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。
var str = 'abc \
def \
ghij \
klmn';
str
// "abc def ghij klmn"
输出的时候还是单行,反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错。
连接运算符(+)可以连接多个单行字符串。
var str = 'abc '
+ 'def '
+ 'higk '
+ 'lmn';
还可以和变量进行拼接
var str1 = 'opqrst'
var str2 = 'abc '
+ 'def '
+ 'higk '
+ 'lmn '
+ str1;
特殊字符的转义
反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
常见的需要用反斜杠转义的特殊字符:
’ :单引号
" :双引号
\ :反斜杠
\n :换行符
\r :回车键
\t :制表符
如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是一样。
'Did you say \'Hai\'?'
// "Did you say 'Hai'?"
"Did you say \"Hai\"?"
// "Did you say "Hai"?"
console.log('abcd\nefg')
//abcd
//efg
模板字符串:反引号
模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
字符串的数组特性
字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)。
var arr = 'Hello World';
console.log(arr[1]) // "e"
console.log(arr[6]) // "W"
console.log(arr[8]) // "r"
// 直接对字符串使用方括号运算符
console.log('Hello World'[0]) // "H"
如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined。
console.log('abc'[3]) // undefined
console.log('abc'[-1]) // undefined
console.log('abc'['y']) // undefined
但是,字符串与数组的相似性仅此而已。实际上,无法改变字符串之中的单个字符。
var arr = 'hello';
delete arr[0];
console.log(arr) // "hello"
arr[1] = 'a';
console.log(arr) // "hello"
上面代码表示,字符串内部的单个字符无法改变和增删
字符串的长度属性length
length属性返回字符串的长度,该属性也是无法改变的。
var arr = 'hello';
console.log(arr.length) // 5
arr.length = 3;
console.log(arr.length) // 5
arr.length = 9;
console.log(arr.length) // 5
上面代码表示字符串的length属性无法改变,但是不会报错。
布尔值
可以返回布尔值的运算符
- 前置逻辑运算符: ! (Not)
- 相等运算符:=,!,==,!=
- 比较运算符:>,>=,<,<=
转为布尔值时为false的六个值
undefined
null
false
0
NaN
""或’’(空字符串)
其他值都视为true。
undefined和null
null与undefined都可以表示“没有”,含义非常相似。语法效果几乎没区别。
undefined == null
// true
null一般指空对象,转为数值时为0;undefined是一个表示"此处无定义"的原始值,转为数值时为NaN。
console.log(6 + null); // 6
console.log(6 + undefined); // NaN