substr给出错误的价值 - javascript

Emm*_*mma 1 javascript string substr

出于某种原因,当我执行以下操作时:

var input = 'focus name (tag1 tag2 OTHER,STUFF) focus 2 (MORE)';
var openParen = input.indexOf('(');
var closeParen = input.indexOf(')');
var parenStr = input.substr(openParen + 1, closeParen - 1);
Run Code Online (Sandbox Code Playgroud)

我期待parenStr相等"tag1 tag2 OTHER,STUFF".

相反,我得到它"tag1 tag2 OTHER,STUFF) focus 2 ".任何人都可以向我解释这个吗?我觉得我疯了哈哈,我试过手动输入:

input.substr(openParen + 1, 32)
Run Code Online (Sandbox Code Playgroud)

但它给出了完全相同的结果.我之前使用过.substr()很多次,之前从未遇到过这种错误,我一定会遗漏一些东西.

Aff*_*ess 6

你打算使用子字符串:

input.substring(openParen + 1, closeParen);

substring将起始和结束索引作为参数.substr采用起始索引和长度参数,这不是您的意图.