Man*_*nav 23 javascript arrays
这似乎是一个常见的JavaScript用法:
function foo (array, index) {
if (typeof array[index] == 'undefined')
alert ('out of bounds baby');
}
Run Code Online (Sandbox Code Playgroud)
而不是更普遍(在其他语言中)和概念上更简单:
function foo (array, index) {
if (index >= array.length)
alert ('boo');
}
Run Code Online (Sandbox Code Playgroud)
据我所知,第一种情况也适用于其中有"间隙"的阵列,但这是一个足以保证成语的常见情况吗?
可以在此处看到提示此问题的代码示例.在这种情况下,当在函数内部使用'argument'变量时,假设它是一个连续的数组是不是很明智?
小智 30
唯一正确的方法是检查索引与长度.
可以为元素分配值undefined
.把它用作这里的哨兵真是太傻了.(可能存在检查未定义的其他,有效且可能重叠的原因,但不是"对于越界检查" - 当给定arg的值确实 存在时,另一个问题中的代码将呈现可能错误的结果undefined
. )
快乐的编码.
Sop*_*ert 16
你也可以写:
if (index in array) {
Run Code Online (Sandbox Code Playgroud)
即使array[index]
设置为,它也会返回true undefined
.