我有以下简单的Javascript代码。
var input = [
'one',
'two'
];
for(var i in input){
if(typeof input[i+1] == undefined){
console.log("i is the last index");
}
}
我不知道我做错了什么,但console.log()
部分从未执行过。这意味着它永远不会进入if
条件,而显然超出最后一个索引的索引是未定义的。
您可以在此fiddle中看到它。
请解释..
答案 0 :(得分:6)
if(typeof input[i+1] === 'undefined') { ... }
答案 1 :(得分:5)
此:
if(typeof input[i+1] == undefined){
应该是:
if(input[i+1] === undefined){
(无需使用typeof
)
答案 2 :(得分:3)
未定义应该是一个字符串,"undefined"
,工作小提琴:http://jsfiddle.net/asifrc/vRTsE/1/
答案 3 :(得分:1)
这是因为typeof运算符返回一个字符串。您需要与字符串“undefined”进行比较,如下所示:
var input = [
'one',
'two'
];
for(var i in input){
if(typeof input[i+1] == "undefined"){
console.log("i is last");
}
}
答案 4 :(得分:0)
typeof
返回一个字符串。您将其与undefined
值进行比较。
使用
if(typeof input[i+1] === "undefined"){
答案 5 :(得分:0)
javascript typeof
运算符始终返回字符串,因此您应该像这样对'undefined'
进行比较:
if(typeof input[i+1] === 'undefined')
这是一个更新的小提琴 - http://jsfiddle.net/Pharaon/V7EJZ/
答案 6 :(得分:0)
事实证明i
的类型是字符串,因此要使代码正常工作,您需要将其转换为整数:
for(var i in input){
if(typeof input[parseInt(i, 10) + 1] === "undefined") {
console.log(i + " is the last index");
}
}