我很难遵循这个概念。该函数的要点是它采用2个参数并测试target
参数是否为str
参数的结尾。
因此end('Sebastion', 'ion')
将返回true
而end('Sebastion', 'eon')
将返回false
我找到了这个解决方案并且不明白-target.length
正在做什么以及与目标的匹配是如何测试参数的。
我对JavaScript很陌生,所以如果有人对如何运作有任何了解,那就太棒了。
function end(str, target) {
return (str.substr(-target.length) === target);
}
答案 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个字符。