javascript - 为什么这里输出0。变量 a = 7; a.构造函数();

标签 javascript numbers

让我们看下面的例子:

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

var a = 7;
console.log(a.constructor()); // prints 0 (Why?)

问题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

最佳答案

Q1: Why is the output 0 here? What does it mean?

a.constructorNumber 并且您使用第一个参数 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/

相关文章:

javascript - 跨浏览器兼容性的典型缺陷

javascript - 如何使用 CKEditor 4 按类访问元素?

javascript - 将随机且不存在的项目从另一个数组添加到数组中

c - C 中的素数和阶乘

java - 比较 int 和 Number 的最佳方法

c# - 正则表达式 (.NET) 以多种格式验证任何实数

java - Java 中的 float

javascript - 浏览器在消耗大量内存后创建 Image Blob 的 ObjectURL 时抛出错误

javascript - webdriverio 'setValue' 到输入字段会引发错误 InvalidElement State

numbers - Octave - 如何处理大数