jQuery inArray()的返回值

use*_*428 2 javascript jquery

我正在阅读关于inArray方法的jQuery文档,我无法理解一个句子的含义.如果该元素不在数组中,则该方法返回-1,否则返回0,则显示:

因为JavaScript将0视为松散等于false(即0 == false,但是0!== false),如果我们检查数组中是否存在值,我们需要检查它是否不等于(或大于)-1.

我无法理解JavaScript将0视为松散等于false的事实与检查方法的返回值的需要有关.即使JavaScript没有以这种方式工作,我也不需要这样做吗?

Dar*_*rov 7

它基本上意味着您需要像这样编写测试:

if ($.inArray(value, array) > -1) {
    // the element is inside the array
}
Run Code Online (Sandbox Code Playgroud)

代替:

if ($.inArray(value, array)) {
    // the element is inside the array
}
Run Code Online (Sandbox Code Playgroud)

为什么你不应该使用第二个结构的原因是因为如果该值是数组的第一个元素的inArray函数将返回0(因为这是一个数组的第一个元素的索引),并作为文档中的解释0是指false:

if (0) {
    // this will never run
}
Run Code Online (Sandbox Code Playgroud)


Aln*_*tak 6

他们只是掩盖了对该功能的可怕错误命名的背后1.

换句话说,他们说你不能这样做:

if ($.inArray(a, b) == false) {
   // will fail if the element is in index 0
}
Run Code Online (Sandbox Code Playgroud)

1一个名为inArray逻辑的函数(没有双关语)应该返回一个布尔值,而不是一个位置.