Ваш foo
аргумент в вашей функции - это весь объект (не вложенный):
{ foo: { bar: 1 } }
Итак, когда вы делаете foo.bar
, свойство bar
отсутствует, и выполучить undefined
.
Таким образом, typeof undefined
даст вам "undefined"
.Вместо этого вы можете использовать более четкие имена свойств, чтобы легко понять тип каждого объекта, а затем получить доступ к свойству foo
из вашего аргумента:
x = (function(obj){
return typeof(obj.foo.bar);
})({ foo: { bar: 1 } });
console.log(x);