JavaScript中单引号多行字符串与字符串拼接的区别是什么?
两段JavaScript字符串处理方式的核心区别
嘿,我来帮你拆解这两段代码的差异,其实核心在字符串的构建方式和内容细节上:
1. 内容上的关键差异:多余空格
你仔细看第二段代码里的每一行末尾:\r\n \ —— 反斜杠前面的那个空格会被保留在最终的字符串里!
所以email2的输出里,除了第一行,后面每一行的开头都会多一个空格:
From: a@gmail.com To: a@yahoo.com // 这里开头多了个空格 Subject: Hello // 同样多了空格 Empty
而第一段用+=拼接的email,每一行都是紧凑的,没有多余空格:
From: a@gmail.com To: a@yahoo.com Subject: Hello Empty
如果把第二段的空格去掉,写成:
var email2 = 'From: a@gmail.com\r\n\ To: a@yahoo.com\r\n\ Subject: Hello\r\n\ \r\nEmpty';
这时候email和email2的内容就完全一致了。
2. 写法场景的区别
- 第一段的
+=拼接:适合动态生成字符串的场景,比如你需要在循环里添加内容,或者根据条件拼接不同的片段,灵活性更高。现代JavaScript引擎已经对这种拼接做了性能优化,不用太担心效率问题。 - 第二段的反斜杠多行写法:这是ES6之前的老写法,用来在代码里写多行字符串,适合定义固定的静态文本。但缺点是容易不小心引入多余字符(比如你代码里的空格),而且写法不如ES6的模板字符串直观。
额外补充:更现代的写法
如果是现在写代码,更推荐用ES6的模板字符串,既支持多行,又不会有多余空格的问题:
const email3 = `From: a@gmail.com To: a@yahoo.com Subject: Hello Empty`;
这样写出来的内容和第一段的email完全一致,代码可读性还更高。
内容的提问来源于stack exchange,提问作者Charles Saag
相关产品推荐
相关产品推荐

