substr、substring、slice的一个区别

slice()substring()substr()这三个方法都是返回被操作字符串的一个子字符串,那么他们有啥区别呢?实际用到时候该怎么选择呢?

共性

  • 返回一个新的字符串。
  • 都是接受一个参数或者两个参数
  • 如果没有第二个参数,则将字符串结束的未位作为结束位置
// log
let x = 'hello'
console.log(x.slice(1))
console.log(x.substring(1))
console.log(x.substr(1))
console.log(x)

特性

这里考虑第二个参数比第一个参数小的场景,有如下规则

  • substr的第二个参数是截取的长度(这是它原本的功能)
  • slice将返回空串
  • substring无视先后顺序
// log
let x = 'hello'
console.log(x.substr(3, 1)) // 正常使用
console.log(x.slice(3, 1) === '')
console.log(x.substring(3, 1))

其他的“奇异”之处这里不再介绍,其实JS的stringAPI在这里设计的不是很好,在日常使用中,“奇异”部分应该避开,我准备以后:

  • 只用substring,和java保持一致。
  • 参数不要出现负数。
原文地址:https://www.cnblogs.com/oceans/p/13683694.html