首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么输出0在这里。变量a= 7;a.constructor();

为什么输出0在这里。变量a= 7;a.constructor();
EN

Stack Overflow用户
提问于 2019-05-13 13:57:42
回答 3查看 76关注 0票数 5

让我们看看下面的例子:

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

代码语言:javascript
复制
var a = 7;
console.log(a.constructor()); // prints 0 (Why?)

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

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-13 14:02:34

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

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

代码语言:javascript
复制
var a = 5;
console.log(a.constructor === Number)
console.log(Number())

当类型a和typeof 7都是number时,为什么a.constructor()运行,而7构造函数()不运行呢?

实际上,7.本身就是一个数字。这里,.不是点符号,而是小数点,因为小数点后面的数字是可选的。

解决方案:

可以有不同的方式直接访问的方法的数字。

代码语言:javascript
复制
console.log(5..constructor)
console.log((5).constructor)
console.log(5 .constructor)

票数 2
EN

Stack Overflow用户

发布于 2019-05-13 14:01:18

Q1:因为parameter是object并且有方法constructor (当不提供参数时返回0)

Q2:因为第一个点被js解释为十进制点,但是尝试

代码语言:javascript
复制
console.log( 7..constructor() );

票数 1
EN

Stack Overflow用户

发布于 2019-05-13 14:07:22

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

构造函数方法用于确定变量的类型(检查示例)

代码语言:javascript
复制
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()不是一个数字。下面的代码将修复这个问题(即使这样做也没有任何意义):

代码语言:javascript
复制
console.log((7).constructor())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56113948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档