我从字面上拉我的头发在这一个...String.indexOf函数的意外结果?
这是情况。我有两个JavaScript字符串如下:
dsName = "Test 1"
replacementString = "Test "
我想看看是否有DSNAME开始replacementString,用下面的代码:
if(dsName.indexOf(replacementString) == 0)
{
// I never get here!
}
的indexOf将返回-1!这怎么可能?我可以在该行之前的Chrome脚本调试中放置一个断点,并将“dsName.indexOf(replacementString)”粘贴到控制台中,并确认它确实返回-1。
现在只是为了证明我不疯狂,我可以从同一个断点打印出dsName,它实际上等于“测试1”,并且replacementString等于“测试”。下面是从Chrome调试控制台的实际截图:
所以你可以看到,如果我在文字字符串粘贴,它工作正常,但如果我使用变量,它不工作。我甚至尝试过使用String(replacementString)和replacementString.toString()来查看是否可能是类型问题,但它也是一样的。
这就像它的工作原理,如果indexOf的参数是一个文字字符串,但不是如果它是一个字符串变量。
我会疯了吗,有没有什么愚蠢的东西我错过了?或者这可能是Chrome中的一个错误?
'chrome:// version'? –
当然,它的作品http://jsfiddle.net/mplungjan/g6sGa/ - Chrome OSX – mplungjan
我刚刚在Chrome v。31.0.1650.63上试过这个,并且它工作得很好。 – forgivenson