startPos为负数且绝对值大于字符串长度,为什么结果却是这样?(360浏览器的测试结果)

来源:7-11 提取指定数目的字符substr()

有礼彬

2016-09-06 15:00

startPos为负数且绝对值大于字符串长度,为什么结果不是

startPos为负数且绝对值大于字符串长度,startPos为0。
结果却是:”o Worl“,为什么不是“Hello ”。


<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

<script type="text/javascript">

var mystr="Hello World!";

document.write(mystr.substr(6)          + "<br />");

document.write(mystr.substr(2,6)          + "<br />");

document.write( mystr.substr(0,6)  + "<br />"                     );

document.write(mystr.substr(-2,6)          + "<br />");

document.write(mystr.substr(-8,6)          + "<br />");


</script>

</head>

<body>

</body>

</html>


写回答 关注

5回答

  • 野枫
    2016-09-06 15:50:03
    已采纳

    substr是从指定的起始位置截取指定长度,这个是从左往右截取的,只用考虑初始位置,-8的位置是o,然后考虑截取长度,往右截取6个字符,就是o Worl,不会因为你人为计数从最后一个数往左倒数而截取方向变成从右往左,所以不是Hello。

    有礼彬

    非常感谢!

    2016-09-21 18:38:36

    共 4 条回复 >

  • 有礼彬
    2016-09-12 18:15:45

    我现在已不纠结那个问题了


  • 名字都给你们起完了
    2016-09-12 17:34:37

    没有一个人能解释你的问题 我也很想知道是为什么 关注~

  • qq_紫諾_03916894
    2016-09-06 15:44:07

    substr(<字符表达式>、<数值表达式1>) -8是从!往前面开始截取,6是取几位数

    document.write(mystr.substr(-16,5) + "<br />");  //结果就是 hello

    第七章还没有学不知道这样说对不对啊 ,如果说错了就是扰乱你的思路了

    有礼彬

    当,startPos为负数且绝对值大于字符串长度,startPos为0。怎么解释?

    2016-09-06 17:20:14

    共 1 条回复 >

  • Haiiz
    2016-09-06 15:29:22

    document.write(mystr.substr(-8,6)          + "<br />");从后面倒数8位  (!drlow o)就是到o哪里,然后就是o Worl;

    -8只是说从后面数起来定位,但是截取的时候还是往前截取的,不是往后

    有礼彬

    当,startPos为负数且绝对值大于字符串长度,startPos为0。怎么解释?

    2016-09-06 17:19:21

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468195 学习 · 21891 问题

查看课程

相似问题