第128天 说说你对js包装对象的理解
包装对象是用来处理基础类型数据的对象,使得字符串、布尔值等变量可以直接调用方法,在对字符串、布尔值进行方法调用的时候,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
Most helpful comment
@DarthVaderrr
10.toString(2)报的是
Uncaught SyntaxError: Invalid or unexpected token,这是词法分析出错而不是类型错误。错误原因在于js编译器将.视为小数点而非点运算符,由于小数点后出现了非数字字符故而被视为无效的token。更深层的原因在于js中只存在
IEEE 754规范的双精度数字,并没有整数这一类型,出现在数字之后的第一个.会被看作是小数点。Workaround