二维码

JavaScript 字符串

JavaScript 字符串

JavaScript 字符串用于存储和操作文本。

JavaScript 字符串是零个或多个字符写在引号内。

1
let text = "John Doe";

您可以使用单引号或双引号:

1
2
let carName1 = "Volvo XC60";  // Double quotes  
let carName2 = 'Volvo XC60';  // Single quotes

您可以在字符串中使用引号,只要它们与引号不匹配即可 将字符串包围起来:

1
2
3
let answer1 = "It's alright";  
let answer2 = "He is called 'Johnny'";
let answer3 = 'He is called "Johnny"';


字符串长度

若要查找字符串的长度,请使用内置属性length

1
2
let text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";  
let length = text.length;


转义角色

因为字符串必须写在引号内,所以 JavaScript 会误解这个字符串:

1
let text = "We are the so-called "Vikings" from the north.";  

字符串将被切成“我们是所谓的”。

避免此问题的解决方案是使用反斜杠转义字符

反斜杠 (\) 转义字符将特殊字符转换为字符串字符:

符号 结果 概述
' 单引号
" " 双引号
\ \ 反斜杠

该序列\"在字符串中插入双引号:

1
let text = "We are the so-called \"Vikings\" from the north.";

该序列\'在字符串中插入一个引号:

1
let text= 'It\'s alright.';  

该序列\\在字符串中插入一个反斜杠:

1
let text = "The character \\ is called backslash.";  

其他六个转义序列在 JavaScript 中是有效的:

Code Result
\b Backspace
\f Form Feed
\n New Line
\r Carriage Return
\t Horizontal Tabulator
\v Vertical Tabulator

上面的 6 个转义字符最初设计用于控制打字机、电传打字机和传真机。它们在 HTML 中没有任何意义。


打破长代码行

为了获得最佳的可读性,程序员通常喜欢避免代码行长度超过 80 个字符。

如果 JavaScript 语句不适合一行,则最好中断 它是在运算符之后:

1
2
document.getElementById("demo").innerHTML =  
"Hello Dolly!";

您还可以使用单个反斜杠拆分文本字符串中的代码行:

1
2
document.getElementById("demo").innerHTML = "Hello \  
Dolly!";

\方法不是首选方法。它可能没有得到普遍支持。
有些浏览器会这样做 不允许在字符\后面留有空格。

分解字符串的更安全方法是使用字符串加法:

1
2
document.getElementById("demo").innerHTML = "Hello " +  
"Dolly!";

不能用反斜杠分隔代码行:

1
2
document.getElementById("demo").innerHTML = \  
"Hello Dolly!";


JavaScript 字符串作为对象

通常,JavaScript 字符串是从文字创建的原始值:

1
let x = "John";  

但是字符串也可以定义为带有关键字的对象:new

1
let y = new String("John");
1
2
let x = "John";  
let y = new String("John");

不要创建 Strings 对象。

该关键字使代码复杂化并减慢执行速度。new

String 对象可能会产生意外结果:

使用运算符时,x 和 y 相等==

1
2
let x = "John";  
let y = new String("John");

使用运算符时,x 和 y 不相等===

1
2
let x = "John";  
let y = new String("John");

请注意 (x==y)(x===y)之间的区别。

(x == y)对还是错?

1
2
let x = new String("John");  
let y = new String("John");

(x === y)对还是错?

1
2
let x = new String("John");  
let y = new String("John");

比较两个 JavaScript 对象总是返回 false