为什么`search`返回-1而不是undefined或null

时间:2015-12-11 06:16:14

标签: javascript

我正在使用JavaScript构建BODMAS计算器,并使用一些代码来迭代等式的所有项以找到某些数学运算符和数字。

var AddPresent = EquationTerms.search(5);
console.log(AddPresent);

如果字符串EquationTerms中存在数字5,它会将字符串中数字的索引/位置记录到浏览器的控制台。如果它不存在,则记录-1。虽然这不会干扰我的程序,但我很好奇:为什么它会记录-1,而不是未定义,或者为null? 我在网上搜索过,但没有找到解释原因的答案。我会很感激解释这一点的人。

2 个答案:

答案 0 :(得分:4)

这是一个非常常见的约定,是从整数和null不可互换的语言中继承的。

像C这样的强类型语言不允许从声明为返回整数的函数返回null,因此需要返回一些表示“未找到”的整数。因为元素无法存在于负索引中,-1是最明显的选择。

答案 1 :(得分:0)

-1表示"未找到匹配"。

它返回-1而不是" false"是字符串开头的一个针位于位置0,这相当于JS中的false。因此,返回-1可确保您知道实际上没有匹配。