почему я получаю неопределенное значение, когда я ввожу {} в сторону функцию, которая получает тип ввода

1

Я сделал код, который получает тип входных данных. Все входы, которые я добавляю в функцию, имеют правильные ответы (например: prompt (10) результат: Number). когда я пытался добавить объект следующим образом ({}) я получаю Undefined код, который я сделал:

function type() {
  var Input = eval (prompt("please enter a value"));
  var Primitive = [Boolean(Input), String(Input), null, undefined, 
  Number(Input)];
 for (i = 0; i < Primitive.length; i++) {
    if (Primitive[i]) {
      console.log (typeof Input)
    }
  }
}
type(); 

Я пытался использовать instanceof, но я получил тот же результат для объекта, который не определен.

Ожидаемый результат, когда я запрашиваю {}, я получаю объект. примечание: для Array [] я получаю объект без проблем.

  • 1
    Попробуйте использовать typeof Primitive[i]
  • 3
    если вы используете eval({}) Javascript будет обрабатывать {} как пустой блок, а не как объект. Я (и многие разработчики) не одобряю использование eval()
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

если вы используете eval({}) Javascript будет обрабатывать {} как пустой блок, а не как объект. Я (и многие разработчики) не одобряю использование eval()

вы можете избежать этого, используя eval("(" + prompt("please enter a value") + ")");

Здесь разница:

var Input = eval (prompt("please enter a value")); 
// if you type {} this will turn into eval({}) wich is the same as eval() which will return "undefined"

Input = eval("(" + prompt("please enter a value") + ")");
//Typing {} will turn into eval(({})) wich makes {} an expression instead of an empty block. thus returning "object"
  • 0
    Я: входит в 0); alert("no"); //
  • 0
    мм, это правда.
Показать ещё 3 комментария
1

{} интерпретируется как (пустой) блок кода, а не как объектный литерал. Он не имеет возвращаемого значения, поэтому по умолчанию он не undefined.

Вы бы получили те же результаты, если бы вы вошли ; ,

Чтобы получить реальный объект, вам нужно убедиться, что { интерпретируется как часть выражения, а не как начало оператора, например, с помощью ({}).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню