字符串基本知识

我们来通过在控制台输入一些基本的行来进行对字符串的学习。(可以打开浏览器按F12打开)

创建一个字符串

  1. 首先, 输入下面的代码:

    1
    2
    let stringTest = 'The test is a string';
    stringTest;

    就像我们处理数字一样,我们声明一个变量,用一个字符串值初始化它,然后返回值。这里惟一的区别是,在编写字符串时,我们需要在字符串上加上引号。

  2. 如果你不这样做,或者在书写过程中,漏掉其中一个引号,你就会得到一个错误。

    试着输入以下几行:

    1
    2
    3
    let badString = This is a test;
    let badString = 'This is a test;
    let badString = This is a test';

    这些行不起作用,因为没有引号的任何文本字符串都被假定为变量名、属性名、保留字或类似。如果浏览器不能找到它,那么将会引发语法错误(例如:”missing ; before statement”)。

  3. 如果您之前定义了变量字符串,下面的操作将会起作用 — 现在来试一试:

    1
    2
    let newString = stringTest;
    newString;

    现在将 string 的值赋值给 newString,赋值之后,两个字符串的值相等。

单引号和双引号

  1. 在JavaScript中,您可以选择单引号或双引号来包裹字符串。

  2. 两者之间几乎没有什么区别,根据个人偏好来使用。但是,您应该选择一个并坚持使用它,不一致的引号混用代码可能会让人很迷惑,特别是如果您在同一个字符串中使用不同的引号!将返回一个错误,浏览器会认为字符串没有被关闭,因为在字符串中您没有使用其他类型的引号。

  3. 但是,您不能在字符串中包含相同的引号,因为它是用来包含它们的。比如:

    1
    let bigmouth = 'I've got no right to take my place...';

    这会返回一个错误。

转义字符串中的字符

要修复我们之前的问题代码行,我们需要避免引号的问题。转义字符意味着我们对它们做一些事情,以确保它们被识别成文本,而不是代码的一部分。在JavaScript中,我们通过在字符之前放一个反斜杠来实现这一点。试试这个:

1
2
let bigmouth = 'I\'ve got no right to take my place...';
bigmouth;

你可以用别的方式来达到一样的目的, 例如. \", 除此之外有一些特殊的代码 。

连接字符串

  1. 在JavaScript中连接字符串使用加号(+)操作符,我们也用它来将数字加在一起,但是在这种情况下,它做了一些不同的事情。让我们在控制台中尝试一个例子。

    1
    2
    3
    4
    let first = 'Hello, ';
    let second = 'how are you?';
    let joined = first + second;
    joined;

    变量 joined 的值的结果,它包含的值为 “Hello, how are you?”。

  2. 最后一个例子中, 我们只是把两个字符串连接在一起,但是你可以喜欢连接多少就多少个, 只需要在它们之间加上 + 操作符。

  3. 你还能用真实的字符串和变量来混合。比如:

    1
    2
    let response = first + 'I am fine — ' + second;
    response;

上下文中的串联

在操作中使用的连接是怎么样的呢,来看一个例子:

1
<button>Press me</button>
1
2
3
4
5
6
const button = document.querySelector('button');

button.onclick = function() {
let name = prompt('What is your name?');
alert('Hello ' + name + ', nice to see you!');
}

复制这段代码去试一试。

这里我们使用的是第4行中的 window.prompt() 函数, 它要求用户通过一个弹出对话框回答一个问题然后将他们输入的文本存储在一个给定的变量中 — 在这个例子中是就是 name 变量。然后,我们在第5行中使用 window.alert() 函数来显示另一个弹出窗口,其中包含一个字符串,我们用两个字符串常量和name变量通过连接进行组合。

数字与字符

  1. 当我们尝试添加(或连接)一个字符串和一个数字时,浏览器很聪明地将数字转换为字符串,并将这两个字符串连接在一起。

  2. 甚至可以用两个数字来这么操作——你可以通过用引号将数字包装成一个字符串。

  3. 如果有一个数值变量,想要将其转换为字符串,并且不改变其他地方,或者想将一个字符串转换为一个数字而不改变其其他地方,那么可以使用以下两个构造:

    • 如果可以的话,Number对象将把传递给它的任何东西转换成一个数字。
      试一试:

      1
      2
      3
      let myString = '123';
      let myNum = Number(myString);
      typeof myNum;
    • 另一方面,每个数字都有一个名为 toString()的方法,它将把它转换成等价的字符串。
      试试这个:

      1
      2
      3
      let myNum = 123;
      let myString = myNum.toString();
      typeof myString;

    这些结构在某些情况下是非常有用的,例如,如果一个用户将一个数字输入到一个表单文本字段中,这将是一个字符串,但是如果你想要将这个数字添加到某些东西中时,你需要它是一个数字,所以你可以通过 Number() 来处理这个问题。