(-'string'.length)在Javascript

时间:2016-11-09 19:03:59

标签: javascript

我很难遵循这个概念。该函数的要点是它采用2个参数并测试target参数是否为str参数的结尾。

因此end('Sebastion', 'ion')将返回trueend('Sebastion', 'eon')将返回false

我找到了这个解决方案并且不明白-target.length正在做什么以及与目标的匹配是如何测试参数的。

我对JavaScript很陌生,所以如果有人对如何运作有任何了解,那就太棒了。

function end(str, target) {
  return (str.substr(-target.length) === target);
}

1 个答案:

答案 0 :(得分:0)

让我们评估str.substr(-target.length)

rules of precedence之后,我们需要先评估-target.length

再次遵循优先规则,我们首先评估target.length。我们这样做是因为"会员访问"在优先表的顶部附近。这将在您的示例中评估为3

否定,获得-3

好的,现在我们需要评估str.substr(-3)

的结果

JavaScript substr函数在此documentation on MDN中包含此内容:

  

start:开始提取字符的位置。如果给出一个负数,则将其视为strLength + start,其中strLength是字符串的长度(例如,如果start为-3,则将其视为strLength - 3.)

     

如果start为负数,则substr()将其用作字符串末尾的字符索引。如果start为负且abs(start)大于字符串的长度,则substr()使用0作为起始索引。注意:Microsoft JScript不支持所描述的start参数负值的处理。

所以它需要源字符串的最后3个字符。