让我们看看下面的例子:
Q1:,为什么输出0在这里?什么意思?
var a = 7;
console.log(a.constructor()); // prints 0 (Why?)
Q2:当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
发布于 2019-05-13 14:02:34
Q1:为什么这里的输出为0?什么意思?
a.constructor是Number,您用第一个参数undefined调用它。因为Number()返回undefined,所以x.constructor()返回undefined。如果没有参数传递给Number(),则返回0
var a = 5;
console.log(a.constructor === Number)
console.log(Number())
当类型a和typeof 7都是number时,为什么a.constructor()运行,而7构造函数()不运行呢?
实际上,7.本身就是一个数字。这里,.不是点符号,而是小数点,因为小数点后面的数字是可选的。
解决方案:
可以有不同的方式直接访问的方法的数字。
console.log(5..constructor)
console.log((5).constructor)
console.log(5 .constructor)
发布于 2019-05-13 14:01:18
Q1:因为parameter是object并且有方法constructor (当不提供参数时返回0)
Q2:因为第一个点被js解释为十进制点,但是尝试
console.log( 7..constructor() );
发布于 2019-05-13 14:07:22
Q1:为什么这里的输出为0?什么意思?
构造函数方法用于确定变量的类型(检查示例)
var a = 7;
console.log(a.constructor == Number);
var b = new Object;
console.log(b.constructor == Number);
console.log(b.constructor == Object);
Q2:当类型a和类型7都是数字时,为什么a.constructor()运行,而7构造函数()不运行?
因为7后面的点被视为十进制,因此它会产生一个错误,因为constructor()不是一个数字。下面的代码将修复这个问题(即使这样做也没有任何意义):
console.log((7).constructor())
https://stackoverflow.com/questions/56113948
复制相似问题