Учится о typeof
ключевом слове и нуждается в уточнении:Поведения TYPEOF ключевого слово
В то время как поиск и устранение неисправностей Я выводимое этот код к консоли:
console.log(typeof object.prop[someNum - 1]);
(в данном случае sumNum === 0
)
консоль распечатала undefined
, что и ожидалось, потому что индексная позиция [someNum - 1]
в массиве prop[]
не существует (так я думал). Однако, когда я делаю что-то вроде этого:
if(typeof object.prop[someNum - 1])
//some code
else
//other code
Он оценивает, как верно и работает //some code
, но когда я делаю это:
if(object.prop[someNum - 1])
//some code
else
//other code
Он оценивает как ложь и работает //other code
.
У меня создалось впечатление, что undefined
считается falsy value
и оценил бы false в if statement
. Почему утверждение if(typeof object.prop[someNum - 1])
оценивается как истинное? Также может кто-то указать мне в правильном направлении, где я могу узнать больше об отрицательных индексационных массивах в js
? Они обрабатываются одинаково на нескольких языках, таких как c#, c++, java, & php
. Я подумал, что при оценке отрицательного array
индексного номера будет underfined
или выбросить ошибку.
'undefined' - это не то же самое, что' 'undefined ''. – SLaks
Поскольку вы изучаете ключевое слово 'typeof', здесь [MDN docs] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) на нем (только в дело). –
Если вы проверяете наличие свойства, вам действительно не нужно 'typeof'. Вы можете сделать '(someNum-1) в object.prop' или если вы беспокоитесь о наследуемых свойствах,' object.prop.hasOwnProperty (someNum-1) '. Использование 'typeof' не будет различать свойство, имеющееся с параметром' undefined', и свойство, не существующее. –