Почему Javascript вернуть эту ошибку типа:Javascript «в» оператора внутри для ошибки типа возвращает цикл
TypeError: Cannot use 'in' operator to search for 'active' in undefined
, когда я делаю что-то вроде этого
foo = [
{link:"http1", active:"true"},
{link:"http2", active:"true"},
{link:"http3"}
]
var checker = function(){
for(i=0; i<= foo.length; i++){
if('active' in foo[i]){
checked = true
}
}
}
, но когда я делаю это в консоли с тем же самым объектом foo
'active' in foo[0]
оно возвращает true?
Передовая практика JavaScript: не используйте 'in'. JavaScript поддерживает то, что вы пытаетесь сделать с тех пор, как просто 'if (foo [i] .active) {...}', или если свойство находится в именованной переменной, давайте притворимся, что у нас есть один вызов "propname" , 'if (foo [i] [propname]) {...}'. И для здравомыслия вы делаете 'if (foo [i] && foo [i] .active) {...}' –
Спасибо. Исходя из python, кажется нормальным делать «in», но я вижу, что вы говорите. – Garuuk