这是否适用于测试位置值是否index存在,或者是否有更好的方法:
index
if(arrayName[index]==""){ // do stuff }
从概念上讲,JavaScript 中的数组包含array.length元素,从array[0]until开始array[array.length - 1]。具有索引的数组元素i被定义为数组的一部分,如果i介于0和array.length - 1包含之间。如果 i 不在此范围内,则它不在数组中。
array.length
array[0]
array[array.length - 1]
i
0
array.length - 1
因此,从概念上讲,数组是线性的,从零开始一直到最大值,没有任何机制可以在不存在条目的范围内产生“间隙”。要找出给定位置索引处是否存在值(其中索引为 0 或正整数),您只需使用
if (i >= 0 && i < array.length) { // it is in array }
现在,在底层,JavaScript 引擎几乎肯定不会像这样线性且连续地分配数组空间,因为它在动态语言中没有多大意义,并且对于某些代码来说效率低下。它们可能是哈希表或一些混合策略,并且数组的未定义范围可能没有分配自己的内存。尽管如此,JavaScript 语言希望将 n 的数组表示array.length 为 具有 n 个 成员,并且它们被命名为 0 到 n - 1 ,并且此范围内的任何内容都是数组的一部分。
但是,您可能想要知道数组中的值是否 实际上已定义 ——也就是说,它不是undefined. 也许您甚至想知道它是否已定义而 不是null. 可以在不设置值的情况下将成员添加到数组中:例如,如果通过增加array.length属性来添加数组值,则任何新值都将为undefined.
undefined
null
确定给定值是否有意义或已定义。也就是说, 不是 undefined,或null:
if (typeof array[index] !== 'undefined') {
要么
if (typeof array[index] !== 'undefined' && array[index] !== null) {
有趣的是,由于 JavaScript 的比较规则,我的最后一个示例可以优化为:
if (array[index] != null) { // The == and != operators consider null equal to only null or undefined }