Я создал код, который получает тип входных данных. Все входные данные, которые я добавляю в функцию, имеют правильные ответы (например, результат prompt (10): Число). когда я попытался добавить такой объект ({}), я получил 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.info (typeof Input)
}
}
}
type();
Я попытался использовать instanceof, но получил тот же результат для объекта, который не определен.
Ожидаемый результат, когда я запрашиваю {}, я получаю Object. примечание: для Array [] у меня нет проблем с объектом.
если вы используете eval({}), Javascript будет рассматривать {} как пустой блок, а не как объект. Я (и многие разработчики) крайне не одобряю использование eval().
Пожалуйста, не используйте eval, особенно когда то, что вы используете eval, не требует eval.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


{} интерпретируется как (пустой) блок кода, а не литерал объекта. Он не имеет возвращаемого значения, поэтому по умолчанию используется undefined.
Вы получите те же результаты, если введете ;.
Чтобы получить реальный объект, вам необходимо убедиться, что { интерпретируется как часть выражения, а не как начало оператора, например, с помощью ({}).
если вы используете 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); alert("no"); //
мм, это правда.
Не могли бы вы проиллюстрировать разницу?
@Guywhotypesfast, кто быстро печатает Большое спасибо
Рад помочь n.n
Попробуйте вместо этого
typeof Primitive[i]