Fe-interview: [js] 第128天 说说你对js包装对象的理解

Created on 21 Aug 2019  ·  3Comments  ·  Source: haizlin/fe-interview

第128天 说说你对js包装对象的理解

js

Most helpful comment

@DarthVaderrr
10.toString(2)报的是Uncaught SyntaxError: Invalid or unexpected token,这是词法分析出错而不是类型错误。错误原因在于js编译器将.视为小数点而非点运算符,由于小数点后出现了非数字字符故而被视为无效的token。

更深层的原因在于js中只存在IEEE 754规范的双精度数字,并没有整数这一类型,出现在数字之后的第一个.会被看作是小数点。

Workaround

  1. 10..toString(2)
  2. 10 .toString(2)
  3. (10).toString(2) // recommended

All 3 comments

包装对象是用来处理基础类型数据的对象,使得字符串、布尔值等变量可以直接调用方法,在对字符串、布尔值进行方法调用的时候,js引擎会自动创建一个包装对象,将操作的值作为原始值,这一过程是隐式的。但是数字类型除外,想要调用数字对象的方法必须显示创建一个Number对象,否则报类型错误。 例如 "a".slice(0) 可以,但是 10.toString(2) 不可以,应该写成
new Number(10).toString(2)

10..toString(2) works, which is just a syntax issue.

@DarthVaderrr
10.toString(2)报的是Uncaught SyntaxError: Invalid or unexpected token,这是词法分析出错而不是类型错误。错误原因在于js编译器将.视为小数点而非点运算符,由于小数点后出现了非数字字符故而被视为无效的token。

更深层的原因在于js中只存在IEEE 754规范的双精度数字,并没有整数这一类型,出现在数字之后的第一个.会被看作是小数点。

Workaround

  1. 10..toString(2)
  2. 10 .toString(2)
  3. (10).toString(2) // recommended
Was this page helpful?
0 / 5 - 0 ratings