为什么indexOf()选择返回-1而不是null?

时间:2016-05-26 10:04:56

标签: javascript

我的意思是更概念性,而不是indexOf()算法的哪一部分专门做到了。

在我看来,如果我要在字符串中搜索一个单词;

var foo = bar.indexOf("fizz");

if (foo) {...}

只有从null返回indexOf()时才可以。但是,为了使上述代码有效,我必须写;

var foo = bar.indexOf("fizz");

if (foo !== -1) {...}

我看不到返回-1而不是null的任何好处。有人能给我一个更有益的例子吗?

2 个答案:

答案 0 :(得分:1)

如果元素存在于索引0中,虽然有结果,但if (foo)不会通过,所以无论如何都不能使用它。

至于它返回-1的原因,它可能与其他类型语言行为相匹配。这样,它将始终返回integer

答案 1 :(得分:0)

就像问substring()为什么不返回boolean

从语义上讲,索引必须是integer,因此返回null并且你的方法名称表明它应该返回一个数字是没有意义的。

此外,如果它返回null,它们将等同于0(因为两者都是假值)导致开发人员产生一些无辜/无意的错误,因此几乎没有收获从此方法返回null。