一、作用

  三者都是基于原字符串创建新字符串的方法。

  接收一到两个参数,第一个参数截取字符串的开始位置(字符下标,从0开始),第二个参数因方法不同而不同,后面不同点会说到。

  另外,三个方法都不会修改原字符串的值。

二、相同点

  • 都可以传入一个或两个参数
  • 只传入一个参数时,都表示从指定下标,截取字符串长度,直到字符串最后一个字符
var str = 'hello sarahshine!';

console.log(str.slice(3));          // 'lo sarahshine!'
console.log(str.substring(3)); // 'lo sarahshine!'
console.log(str.subtr(3)); // 'lo sarahshine!'

三、不同点

2.1   传入两个参数时,第二个参数代表的意义不同

  • slice ( ) 和 substring ( ) 的第二个参数,都表示截取字符串的结束位置
  • substr ( ) 的第二个参数代表的是,要截取的字符串位数
var str = 'hello sarahshine!';

console.log(str.slice(3,7));           // 'lo s'
console.log(str.substring(3,7)); // 'lo s'
console.log(str.substr(3,7)); // 'lo sara'

2.2  传入的参数是负数

  • slice ( )  会把所有的负数参数加上字符串的长度值,如:str.slice(-3)   相当于 str.slice(14)
  • substring ( ) 会把所有的负数参数都转为0
  • substr ( ) 会把第一个参数的负值加上字符串的长度值,第二个参数的负值转为0   (毕竟第二个参数是要截取的字符串长度,总不能为负数吧)
var str = 'hello sarahshine!';  //length = 17

//只传入一个负数
console.log(str.slice(-3)); // 'ne!' 相当于str.slice(14)
console.log(str.substring(-3)); // 'hello sarahshine!' 相当于str.substring(0)
console.log(str.substr(-3)); // 'ne!' 相当于str.substr(14) //传入两个负数
console.log(str.slice(-3, -1)); // 'ne' 相当于str.slice(14,16)
console.log(str.substring(-3, -1)); // '' 相当于str.substring(0,0)
console.log(str.substr(-3, -1)); // '' 相当于str.substr(14,0) //传入一正一负
console.log(str.slice(3, -4)); // 'lo sarahsh' 相当于str.slice(3,13)
console.log(str.substring(3, -4)); // 'hel' 相当于str.substring(3,0) 即(0,3)
console.log(str.substr(3, -4)); // '' 相当于str.substr(3,0)

以上都出自《javascript高级程序设计》

js中 substr(), substring(), slice()的区别的更多相关文章

  1. js中substr,substring,slice。截取字符串的区别

    substr(n1,n2) n1:起始位置(可以为负数) n2:截取长度(不可以为0,不可以为负数,可以为空) 当n1为正数时,从字符串的n1下标处截取字符串(起始位置),长度为n2. 当n1为负数时 ...

  2. substr,substring,slice 的区别

    javascript中的三个函数substr,substring,slice都可以用来提取字符串的某一部分(函数名称都是小写,不要写成subStr,subString又或者Substring,记住js ...

  3. js中substr,substring,indexOf,lastIndexOf的用法小结

    第一组:str.substr(start,length) 和 str.substring(start,end) 定义: str.substr(start,length) substr(start,le ...

  4. js中substr,substring,indexOf,lastIndexOf等的用法

    1.substrsubstr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png";alert( ...

  5. js中substr,substring,indexOf,lastIndexOf,split 的用法

    1.substr substr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png";alert ...

  6. js中substr,substring,indexOf,lastIndexOf,split用法

    1.substr substr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png"; aler ...

  7. JS中substr与substring的区别

    js中substr和substring都是截取字符串中子串,非常相近,可以有一个或两个参数. 语法:substr(start [,length]) 第一个字符的索引是0,start必选 length可 ...

  8. js 字符串截取函数substr,substring,slice之间的差异

    js 字符串的截取,主要有三个函数,一般使用三个函数:substr,substring,slice. 而这三个函数是不完全一样的,平时很难记住,在这里做下笔记,下次遇到的时候,直接从这里参考,调用合适 ...

  9. JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别

    JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...

随机推荐

  1. CSS3实现一束光划过图片、和文字特效

    在打折图标里面 实现一道白光划过的动画效果 css: <!DOCTYPE html><html><head><meta charset="utf-8 ...

  2. JavaScript--------------------jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画

    bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数. $("a").bind("click",function(){alert( ...

  3. 【原创101】Servlet精细笔记

    一.什么Servlet? servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序).servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户 ...

  4. 在SQL Server中用好模糊查询指令LIKE

    简介:like在sql中的使用 在SQL Server中用好模糊查询指令LIKE 查询是SQL Server中重要的功能,而在查询中将Like用上,可以搜索到一些意想不到的结果和效果,like的神奇之 ...

  5. vue-router2 使用

    VUE-ROUTER2  API http://router.vuejs.org/zh-cn/api/router-link.html   1,安装vue-router npm install vue ...

  6. 【shell编程基础3】shell编程的组合应用之二:管道及其命令

    预备知识: 管道:它是一个单向的,可以把前一个的数据输出导向到下一个命令的工具,这样可以实现多个命令组合处理一套数据. 它的符号是  "|"    管道只能处理经过前面一个命令传过 ...

  7. T-SQL几个简单的操作

    视图 咱们先来了解下视图到底是什么意思,顾名思义,用简单的视觉方式展现复杂的内容 有什么功能呢, 各位应该还记得咱们之前练习的那个小小的数据库superise,里面有这么四张表,分别是: studen ...

  8. DirectFB学习笔记四

    本篇目的,实现按钮的点击事件捕获,也就是鼠标点击,如果点击在方框范围内,则响应,在方框外,则忽略. 由于鼠标移动和点击都会产生事件,因此,我们可以在鼠标移动的时候记录坐标,在点击时比较坐标是否在方框范 ...

  9. LinkCode 第k个排列

    http://www.lintcode.com/zh-cn/problem/permutation-sequence/# 原题 给定 n 和 k,求123..n组成的排列中的第 k 个排列. 注意事项 ...

  10. C语言学习第九章

    学习C语言的最后一节课了,原因嘛上一章的末尾说过了,其实写这篇博客的时候以后开始学习Java一个多月了,一直因为各种各样的原因没有坚持做到每天一篇学习记录,可能主要因为懒吧....也有点笨,Java的 ...