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

前言

    初中级前端工程师在工作中会因为使用错误的方法而引起各种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类型的原生方法,也都不会改变其原始值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值