为什么这里的输出为0。var a = 7; a.constructor();

Aad*_*rma 5 javascript numbers

让我们看下面的例子:

Q1:为什么0这里输出?这是什么意思?

var a = 7;
console.log(a.constructor()); // prints 0 (Why?)
Run Code Online (Sandbox Code Playgroud)

问题2:何时typeof atypeof 7两者都是数字,为什么a.constructor()运行而7.constructor()没有?

var a = 7; 
var bool = typeof a === typeof 7;

console.log(a.constructor()); // 0
console.log((++a).constructor()); // 0

console.log(7.constructor()); // SyntaxError: Invalid or unexpected token
console.log(++a.constructor()); // ReferenceError: Invalid left-hand side expression in prefix operation
Run Code Online (Sandbox Code Playgroud)

Mah*_*Ali 2

Q1:为什么这里输出0?这是什么意思?

a.constructorNumber并且您用第一个参数调用它undefined。因为Number()回报undefined所以x.constructor()回报undefined。如果没有参数传递给Number()它返回0

var a = 5;
console.log(a.constructor === Number)
console.log(Number())
Run Code Online (Sandbox Code Playgroud)

当 typeof a 和 typeof 7 都是数字时,为什么 a.constructor() 运行而 7.constructor() 不运行?

其实7.本身就是一个数字。这里.不使用点表示法,而是使用小数点,因为小数点后面的数字是可选的。

解决方案:

可以有不同的方式来直接访问号码的方法。

console.log(5..constructor)
console.log((5).constructor)
console.log(5 .constructor)
Run Code Online (Sandbox Code Playgroud)