这个概念我们在前面讲到过,所谓字符串就是一串字符。在这里我们就进一步的去了解一些相关的细节。
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); // 输出 这是反斜线 \
好啦,这些细节希望大家都能记住,我们下一章再见~
暂无评论内容