让我们看下面的例子:
Q1:为什么这里输出0
?什么意思?
var a = 7;
console.log(a.constructor()); // prints 0 (Why?)
问题2:当typeof a
和typeof 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
最佳答案
Q1: Why is the output 0 here? What does it mean?
a.constructor
是 Number
并且您使用第一个参数 undefined
调用它。因为 Number()
返回 undefined
所以 x.constructor()
返回 undefined
。如果没有参数传递给 Number()
,它返回 0
var a = 5;
console.log(a.constructor === Number)
console.log(Number())
When typeof a and typeof 7 both are number, why a.constructor() runs whereas 7.constructor() doesn't?
实际上 7.
本身就是一个数字。这里 .
不是点符号,而是小数点,因为小数点后的数字是可选的。
解决方案:
可以有不同的方法直接访问数字的方法。
console.log(5..constructor)
console.log((5).constructor)
console.log(5 .constructor)
关于javascript - 为什么这里输出0。变量 a = 7; a.构造函数();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56113948/