这个问题在这里已有答案:
输出:
var x = 5;
typeof (x) //will give number type as output
但是对于下面的代码,它返回false:
var x = 5;
x instanceof Number; //will give false as output
任何人都可以解释数字和数字之间的区别。我如何使第二个工作?
typeof(x)
总是返回一个表示x所属类型的字符串。
instanceOf
运算符使用prototype
属性来标识实例是否属于某个类。
在你的情况下x instanceof Number;
返回false
,因为x
是一个原始的,永远不会返回true
。如果你确实希望它返回true,你可以将你的原语“包装”到Number
类中,如下所示:
new Number(x) instanceof Number; //will give TRUE as output
如何使第二个工作?
instanceof
运算符检查给定变量是否是类的对象。根据MDN的定义,
instanceof
运算符测试构造函数的prototype
属性是否出现在对象的原型链中的任何位置。
要使其工作,您需要使用Number
类'(或其任何后代类')构造函数来实例化变量:
var x = new Number(5);
x instanceof Number // true