JavaScript各类型方法整理一(字符串部分)

JavaScript各类型方法整理(字符串部分)

  • 前言
    • 一、传统字符串方法
    • 二、ES6(及以后)新增的字符串方法
    • 三、总结

前言

    初中级前端工程师在工作中会因为使用错误的方法而引起各种bug,原因是有的方法并不是纯函数,会带来副作用,对调用方法的数据源进行修改,假如这不是你预期的后果,则会引起一些bug,而且这种bug往往查找起来比较费时费力,所以我在这里帮助大家(也提醒自己)梳理一下各种数据类型原生方法,看看哪些方法是纯函数,不带来副作用,不改变原数据~哪些方法会对原数据源进行修改,而且返回值可能并不是我们预期的值。

一、传统字符串方法

方法名 作用 描述 返回值 是否会修改原字符串
indexOf(str,start ) 查找字符串 返回字符串中指定文本首次出现的索引(位置)可接受第二个参数作为搜索起始位置 索引或-1
lastIndexOf(str,start ) 查找字符串 返回字符串中指定文本最后一次出现的索引(位置)可接受第二个参数作为搜索起始位置 索引或-1
search(str||reg) 查找字符串 返回字符串中指定文本首次出现的索引(位置)不同于indexOf的点:不能接受第二个参数,可以接受正则搜索 索引或-1
slice( start,end) 切割字符串 提取字符串的某个部分并在新字符串中返回被提取的部分(不包括end项),如果忽略第二个参数,则切割剩下的部分 ,如果某个参数为负,则从结尾向前切割 切割后的新字符串
substring( +start,+end) 切割字符串 类似于slice方法,区别是不能接收负的参数 切割后的新字符串
substr( start,length ) 切割字符串 类似于slice方法,区别是在于第二个参数规定被提取部分的长度 切割后的新字符串
replace( old,new ) 替换字符串中某部分 用另一个值替换在字符串中指定的值,默认对大小写敏感(可以通过/i来执行大小写不敏感的替换),默认只替换首个匹配(用/g来执行整个字符串所有匹配项) 替换后的新字符串
toUpperCase( ) 转换成大写 把字符串转换为大写,不接收参数,执行方式为 usStr.toUpperCase() 转换后的新字符串
toLowerCase( ) 转换成小写 把字符串转换为小写,不接收参数,执行方式为 usStr.toLowerCase() 转换后的新字符串
concat( str1,str2,… ) 连接字符串 连接两个或多个字符串 组合后的新字符串
String.trim() 去除空格 去除字符串两端的空白符(IE8以上支持) 去空格后的新字符串
charAt(index) 查找字符 查找字符串中指定下标(位置)的字符串 (优于ES5提供的【】属性访问字符串位置,不会返回undefined) 字符串中index位置的字符 或者 空值
charCodeAt(index) 查找字符 查找返回字符串中指定索引的字符 unicode 编码 字符串中index位置的unicode编码 或者 空值

二、ES6(及以后)新增的字符串方法

另外ES6提供了几个新的字符串方法,这里一并整理(只整理常用方法,详细的新增方法可以查阅阮一峰大神的ES6入门教程——字符串的新增方法):

方法名 作用 描述 返回值 是否会修改原字符串
includes(str,start) 判断字符串中是否包含某个字符 判断字符串中是否包含该字符,支持第二个参数,表示开始搜索的位置。 布尔值
startsWith(str,start) 判断字符串是否以某个字符开头 表示参数字符串是否在原字符串的头部,支持第二个参数,表示开始搜索的位置。 布尔值
endsWith(str,start) 判断字符串是否以某个字符结尾 表示参数字符串是否在原字符串的尾部,支持第二个参数,表示开始搜索的位置(不同于其他两个方法,endsWith方法的第二个参数是针对前n个字符)。 布尔值
repeat(times) 将字符串复制times遍 参数如果是小数,会被取整。如果参数是负数或者Infinity,会报错。参数NaN等同于 0参数是字符串,则会先转换成数字, 复制后的字符串
padStart(length,str) 补全字符串 ES2017 新增—— 用于字符串长度不足length时在字符串头部以str补全 补全后的字符串或原字符串,如果省略第二个参数则默认以空格补全,常见用途是补全指定位数 或者提示字符串格式 :‘09-12’.padStart(10, ‘YYYY-MM-DD’) // “YYYY-09-12”
padEnd(length,str) 补全字符串 ES2017 新增—— 用于字符串长度不足length时在字符串尾部以str补全 补全后的字符串或原字符串,如果省略第二个参数则默认以空格补全,常见用途是补全指定位数 或者提示字符串格式 :‘09-12’.padStart(10, ‘YYYY-MM-DD’) // “YYYY-09-12”
trimStart() 去除头部空格 别名trimLeft() 去除头部空格后的字符串。除了空格键,对字符串头部的 tab 键、换行符等不可见的空白符号也有效。
trimEnd() 去除尾部空格 别名trimRight() 去除头部空格后的字符串 。除了空格键,对字符串尾部的 tab 键、换行符等不可见的空白符号也有效。

三、总结

由此我们发现,所有的字符串方法都不会操作原字符串本身,而是会返回新字符串/索引值/布尔值等,其实是由于ECMAScript中的原始值都是不可变的,所以不单单是字符串,包括number类型的原生方法,也都不会改变其原始值。

你可能感兴趣的:(es6,es6/es7,javassist,字符串)