JavaScript字符串不可变,所有“修改”操作均返回新字符串;replace()默认只替换首个匹配项,全量替换需/g标志或replaceAll();split()对空格等需谨慎处理;推荐includes()判断子串,注意null/undefined报错。

JavaScript 字符串是不可变的原始类型,所有“修改”操作实际都返回新字符串——这是绝大多数意外行为的根源。
为什么 str.replace() 只替换第一个匹配项?
因为默认只替换首个匹配,除非传入全局正则表达式。常见错误是写 str.replace('a', 'b') 以为能全量替换,结果只换掉第一个 'a'。
- 全量替换用
str.replace(/a/g, 'b')(注意/g标志) - 或改用
str.replaceAll('a', 'b')(ES2021+,但 IE 不支持) - 若需动态构造正则,记得转义特殊字符,否则
replace(new RegExp(userInput, 'g'), ...)可能报错
split() 遇到空字符串或连续分隔符怎么处理?
split('') 会把字符串拆成单字符数组;split(' ') 遇到多个空格时,中间会产生空字符串元素。
-
'a b'.split(' ')→['a', '', 'b'],不是['a', 'b'] - 安全做法:先
trim()再split(/\s+/)处理任意空白 -
split('')在 Unicode 字符(如 emoji、带音标字母)上可能出错,推荐用[...str]或Array.from(str)
判断字符串是否包含子串,该用 includes() 还是 indexOf()?
优先用 includes():语义清晰、返回布尔值,避免 indexOf() !== -1 的冗余写法。
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
立即学习“Java免费学习笔记(深入)”;
-
includes()支持第二个参数(起始位置),但不支持正则;search()才支持正则查找 - 需要获取位置信息时才用
indexOf()或lastIndexOf() - 大小写敏感是默认行为,忽略大小写请先转成统一大小写,或用
search(/pattern/i)
字符串方法大多不修改原串,但容易在链式调用中误以为某个方法改变了它;另外,所有方法对 null 或 undefined 调用都会报 TypeError: Cannot read property 'xxx' of null——这点常被忽略。










