typeof свойства объекта (число) при передаче в IIFE возвращается неопределенным.Зачем? - PullRequest
0 голосов
/ 27 февраля 2019

Как в мире вывод не является числом?

  • Существует простая функция (IIFE), которой передается объект, свойством которого является число
  • Когдамы пытаемся найти typeof этого свойства, которое ссылается на число, в результате получаем «undefined»

Как?

<script>

x = (function(foo){
  return typeof(foo.bar);
})({ foo: { bar: 1 } });

console.log(x);

</script>

Ответы [ 4 ]

0 голосов
/ 27 февраля 2019

Вы можете деструктурировать foo в аргументе функции.

let x = (function({foo}){
  return typeof(foo.bar);
})({ foo: { bar: 1 } });

console.log(x);
0 голосов
/ 27 февраля 2019

Фу это аргумент.Вы должны получить доступ к свойствам внутри функции, используя.запись

x = (function(foo){
  return typeof(foo.foo.bar);
})({ foo: { bar: 1 } });

console.log(x);
0 голосов
/ 27 февраля 2019

Ваш 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);
0 голосов
/ 27 февраля 2019

Если должно быть foo.foo.bar

foo, параметр - это объект со свойством foo в нем

x = (function(foo) {
  return typeof(foo.foo.bar);
})({ foo: { bar: 1 } });

console.log(x);

Вы, вероятно, хотели разложить аргумент следующим образом:

x = (function({ foo }) {
  return typeof(foo.bar);
})({ foo: { bar: 1 } });

console.log(x);
...