第九十七章 字符串

这个概念我们在前面讲到过,所谓字符串就是一串字符。在这里我们就进一步的去了解一些相关的细节。

let what_I_think = 'DMS is a lovely mouse.';

现在我们声明了一个变量 what_I_think,来代表一个字符串。那么变量和字符串之间,一个很重要的区别就是有没有引号。我们可以这样证明:

let a = 1;let b = a;let c = 'a';console.log(b); // 输出 1console.log(c); // 输出 a

那么没有引号的 a 就是变量的名称,加上引号就是字符串,说明这里要当做字符看待。

同时,我们可以看出,字符串可以是一个字符,虽然它叫“串”。甚至可以没有字符,'' 就是一个空字符串。

字符串可以进行运算吗?

let a = 'My name is '+'Daomishu.';console.log(a); // 输出 My name is Daomishu.

这里的加号就不再是加号,而是连接操作符,用来连接前后两个字符串。当然也可以前后两个代表字符串的变量。

let a = 'My name is ';let b = 'Daomishu.';let c = a+b;console.log(c); // 输出 My name is Daomishu.

那么我们就要搞事情了,如果让数字和字符串相加的话会怎样?

let a = 1;let b = '2';let c = a+b;let d = b+a;console.log('c is '+c+'; d is '+d);

结果是这样的:

数字和字符串

很明显,这只是把数字也当成字符串,然后拼接了起来。可能这并不是需要的结果,我们希望他们真的进行计算,怎么办呢?先把字符串转换为数字类型(可能的前提下!),然后再计算就好了。

let a = 1;let b = '2';let c = a+(+b);console.log('c is '+c);
字符串转化为数字

现在就如愿的相加了。因为我们先给 b 加了一个正号,正号是不会改变一个数的值的,但是它会让这个值在可能的情况下转换为数字。

这时候我们就接触到了数据的类型,不同类型放在一起运算,会先转换为相同的类型,然后再计算。或者我们也可以先进行手动转换,然后再计算。

数据类型是一个重点,虽然 JS 不强调这一点,但绝不意味着它不重要,只是前期可以暂时不被这些内容困扰而已。

依旧是上面的例子,如果我不加小括号呢?就变成了 a++b,注意 ++ 也是一个运算符,那么结果就又是一个样子了。

这些也是我们自己尝试,去探索问题答案的方法,设计一个小的案例,去猜想,去验证,再去思考为什么。那么方法都放在这里了,以后遇到问题,是不是要自己先尝试一下,然后才可以提问呢?

还是上面的例子,大家看到,我的输出中增加了一些格式,让输出的结果看起来更舒服,就是很简单的连接字符串的方法,这挺好理解的,只是写很多加号让人觉得麻烦。其实还有一个技巧: console.log 可以输出多个值,它们之间用逗号分隔就行了。但是这不是连接字符串,只是按顺序逐个进行输出。

let a = 'Hello';let b = 'world!';console.log(a, b);
多个输出

可以看到我并没有加空格,输出的中间却是有空格的,就这样,但是要知道,它是逐个输出,并没有连接成一个整体。

再说说引号。引号是可以相互嵌套的,比如这样:

let a = '单引号里面可以放"双"引号';let b = "双引号里面可以放'单'引号";console.log(a);console.log(b);

注意,这里面我是用的都是英文标点。

使用引号

因为 HTML 和 CSS 里面大量存在双引号,所以我们在写 JS 的时候优先使用单引号会相对方便一些。

但是如果我们的嵌套非常复杂,不止两层引号,这时候好像就怎么都不好弄呢,那么我们来认识一下转义符 \

let a = '这是单引号里面的单引号 \'';console.log(a); // 输出 这是单引号里面的单引号 '

通过转义,让程序知道这个反斜线后面的单引号不是符号,而是字符,那么就不像其他符号一样起作用,而是当做字符处理。

但是你会发现你无法输出反斜线:

let a = '这是反斜线 \';console.log(a); // 这里会报错,因为它把最后的引号给转义了,导致字符串最后缺少引号。

那么我们要如何输出反斜线呢?答案是对它自己进行转义。

let a = '这是反斜线 \\';console.log(a); // 输出 这是反斜线 \

好啦,这些细节希望大家都能记住,我们下一章再见~

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容