模板字符串

字符串的不可变性

字符串里面的值不可被改变。虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。

代码举例:

var str = ‘hello’;

str = ‘qianguyihao’;

比如上面的代码,当重新给变量 str
赋值时,常量hello不会被修改,依然保存在内存中;str
会改为指向qianguyihao。

模板字符串(模板字面量)

ES6中引入了模板字符串,让我们省去了字符串拼接的烦恼。下面一起来看看它的特性。

注意:模板字符串用的是反引号,不是单引号

在模板字符串中插入变量

以前,让字符串进行拼接的时候,是这样做的:(传统写法的字符串拼接)

var name = ‘smyhvae’;

var age = ‘26’;

console.log(‘name:’ + name + ‘,age:’ + age); //传统写法

这种写法,比较繁琐,而且容易出错。

现在,有了 ES6 语法,字符串拼接可以这样写:

var name = ‘qianguyihao’;

var age = ‘26’;

console.log(‘我是’ + name + ‘,age:’ + age); //传统写法

console.log(我是${name},age:${age}); //ES6 写法。注意语法格式

注意,上方代码中,倒数第二行用的符号是单引号,最后一行用的符号是反引号(在
tab 键的上方)。

在模板字符串中插入表达式

以前,在字符串中插入表达式的写法必须是这样的:

const a = 5;

const b = 10;

console.log(‘this is ‘ + (a + b) + ‘ andnnot ‘ + (2 * a + b) +
‘.’);

现在,通过模板字符串,我们可以使用一种更优雅的方式来表示:

const a = 5;

const b = 10;

// 下面这行代码,故意做了换行。

console.log(`this is ${a + b} and

not ${2 * a + b}.`);

打印结果:

this is 15 and

not 20.

模板字符串中可以换行

因为模板字符串支持换行,所以可以让代码写得非常美观。

代码举例:

const result = {

name: ‘qianguyihao’,

age: 28,

sex: ‘男’,

};

// 模板字符串支持换行

const html = `

${result.name}

${result.age}

${result.sex}

`;

console.log(html); // 打印结果也会换行

打印结果:

模板字符串中可以调用函数

模板字符串中可以调用函数。字符串中调用函数的位置,将会显示函数执行后的返回值。

举例:

function getName() {

return ‘qianguyihao’;

}

console.log(www.${getName()}.com); // 打印结果:www.qianguyihao.com

模板字符串支持嵌套使用

const nameList = [‘千古壹号’, ‘许嵩’, ‘解忧少帅’];

function myTemplate() {

// join(‘’) 的意思是,把数组里的内容合并成一个字符串

return `

    ${nameList

    .map((item) => <li>${item}</li>)

    .join(‘’)}

`;

}

document.body.innerHTML = myTemplate();

效果如下:


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!