LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

JavaScript 字符串深度解析:模板字符串与常用方法详解

zhenglin
2025年11月3日 14:54 本文热度 156

在 JavaScript 开发中,字符串和数组是最常用的数据类型。熟练掌握它们的操作方法,不仅可以提高代码可读性,还能大幅提升开发效率。

本文将结合示例,系统讲解字符串的声明方式、字符串模板(Template String)、String 对象、数组的 map 方法及其在 DOM 操作中的应用,帮助你构建更加规范、可维护的代码。


一、字符串的声明与风格

在 JavaScript 中,字符串可以使用三种方式声明:


let str1 = "hello world";

let str2 = 'hello world';

let str3 = `hello world`;

  • 双引号 "..."单引号 '...' :传统声明方式,行为几乎相同。公司在团队开发中通常会统一一种风格,保证代码可维护性。


  • 模板字符串 `...` :ES6 引入,支持多行字符串以及内嵌变量。相比传统拼接方式,模板字符串可读性更高,尤其适合生成 HTML 或复杂文本。


字符串拼接对比

ES5 拼接字符串:

let w = 'world';

let str4 = "hello" + w;

console.log(str4); // helloworld

注意:这里 "hello" + w 并没有空格,结果是 "helloworld",长度为 10。如果希望拼接带空格,需要 "hello " + w


ES6 模板字符串:


let str5 = `hello ${w}`;

console.log(str5); // hello world


模板字符串不仅支持变量插入,还可以换行,多行 HTML 或文本可以直接写入而无需 \n 或 + 拼接。



二、原始字符串与 String 对象

在 JavaScript 中,字符串有两种形式:

  1. 原始字符串(Primitive String):直接用字面量声明,如 "abc"

  2. String 对象(String Object):通过 new String("abc") 创建。

示例:

代码高亮:

let str1 = "abc";           // 原始字符串

let str2 = new String("abc"); // 字符串对象

它们的区别:


可以看到,虽然两者内部的字符串值相同,但 new String 创建的是对象类型,容易在逻辑判断中出错:

if (new String("")) console.log("执行"); // 会执行,因为对象永远 truthy

if ("") console.log("执行");             // 不会执行

建议:除非做语言机制实验,否则使用原始字符串即可。



三、字符串的属性与方法

1. length 属性

原始字符串虽然不是对象,但在访问属性或方法时,JavaScript 会自动装箱,临时把原始字符串包装成 String 对象:


let str = "hello";

console.log(str.length); // 5


这个机制也适用于调用方法,例如:


console.log("abc".toUpperCase()); // "ABC"


2. 常用方法

  • 查询

代码高亮:

str.charAt(0);        // 返回第一个字符

str.includes("he");   // 判断是否包含

str.startsWith("he"); // 是否以指定字符串开头

str.endsWith("lo");   // 是否以指定字符串结尾

str.indexOf("l");     // 第一次出现位置

str.lastIndexOf("l"); // 最后一次出现位置


  • 截取/分割


str.slice(0, 3);      // "hel"  支持负数

str.substring(0, 3);  // "hel"  不支持负数

str.split(" ");       // ["hello", "world"]


  • 大小写

str.toUpperCase(); // "HELLO"

str.toLowerCase(); // "hello"


  • 替换

str.replace("hello", "hi");      // 替换一次

str.replaceAll("l", "*");        // 替换全部


  • 去空格
代码高亮:

str.trim();       // 去头尾空格

str.trimStart();  // 去开头空格

str.trimEnd();    // 去尾部空格


  • 填充/重复


"5".padStart(3, "0"); // "005"

"5".padEnd(3, "0");   // "500"

"abc".repeat(3);      // "abcabcabc"



四、数组的 map 方法

数组是 JavaScript 中另一类常用数据结构,map 是最重要的方法之一。它遍历数组的每个元素,并返回由每次回调函数返回值组成的新数组。

示例:

const todos = [

    { id: 1, text: '学习es6' },

    { id: 2, text: '通读你不知道的JavaScript' }

];


const liList = todos.map(todo => `<li>${todo.text}</li>`);

console.log(liList);

// ["<li>学习es6</li>", "<li>通读你不知道的JavaScript</li>"]


注意:

  • map 返回一个新数组

  • ES6 箭头函数可以省略 function 关键字

  • 如果函数体只有一条语句且是返回值,可以省略 {} 和 return

todos.map(todo => `<li>${todo.text}</li>`);


五、结合模板字符串生成 DOM

将字符串模板与 map 结合,可以非常方便地生成 HTML:

代码高亮:

const todosEL = document.querySelector('.todos');


todosEL.innerHTML = `

<ul>

  ${todos.map(todo => `<li>${todo.text}</li>`).join('')}

</ul>

`;


解析:

  1. ${...} 是模板字符串的占位符,里面可以放任意表达式。

  2. map 返回一个数组,join('') 将数组转换为字符串,避免默认逗号。

  3. 内嵌多行模板,HTML 可读性更高。

运行结果:

<div class="todos">

  <ul>

    <li>学习es6</li>

    <li>通读你不知道的JavaScript</li>

  </ul>

</div>

这样,你就不需要使用复杂的字符串拼接或 DOM API 循环插入节点,代码更简洁明了。


六、总结与最佳实践

坚持统一字符串风格
团队开发时尽量统一使用单引号或双引号,模板字符串用于多行和变量插入。

优先使用原始字符串
避免 new String(...),防止类型混淆和逻辑错误。

模板字符串提高可读性
在生成 HTML 或复杂文本时,模板字符串比 + 拼接更直观。

数组操作结合模板字符串
map + 模板字符串 + join('') 是生成列表的高效方式。

了解包装类型和自动装箱机制
原始类型访问属性时会临时包装成对象,这解释了为什么 "abc".length 可以取到长度。

掌握 Object.prototype.toString.call
精确判断类型,尤其在处理对象、数组和原始值时,比 typeof 更可靠。



参考文章:原文链接


该文章在 2025/11/3 14:54:33 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved