可能重复:
在JavaScript中使用toString
152..toString(2)
Run Code Online (Sandbox Code Playgroud)
正确创建二进制字符串"10011000",但是
152.toString(2)
Run Code Online (Sandbox Code Playgroud)
抛出一个例外
"SyntaxError:标识符在数字文字后立即启动"
为什么?后一种语法实际上听起来更正确,而前者看起来很奇怪!
我正在阅读Douglas Crockford的JavaScript:The Good Parts,我正处于定义淡入淡出功能的地步.部分代码归结为:
var level = 1;
var hex = level.toString(16);
Run Code Online (Sandbox Code Playgroud)
所以我在浏览器的控制台中运行它以查看我得到的内容....
var level = 1;
level.toString(16);
Run Code Online (Sandbox Code Playgroud)
嘿,它返回" 1"...... Fabuloso!Wunderbar酒吧!
然后,为了厚颜无耻,我试着看看我得到了什么......
1.toString(16);
Run Code Online (Sandbox Code Playgroud)
我明白了
SyntaxError:意外的标记ILLEGAL
什么是什么?如果level变量等于1,并且在该级别上运行此方法工作正常,那么为什么不在实际的数字1上运行此方法呢?我尝试了一种与该toPrecision()方法类似的实验,并且在两种情况下均可正常工作.这是什么问题?这是JavaScript实现中的另一个固有缺陷,还是我错过了什么?我正在Google Chrome中测试.
相关:Stack Overflow问题为什么数字文字不能访问Number方法?.
如果我跑
var num = 23;
var n = num.toString();
console.log(n)
Run Code Online (Sandbox Code Playgroud)
它23按预期记录,但如果我toString()直接应用于数字,
var n = 15.toString();
console.log(n)
Run Code Online (Sandbox Code Playgroud)
它会抛出一个错误:
Uncaught SyntaxError: Invalid or unexpected token.
Run Code Online (Sandbox Code Playgroud)
我注意到它也适用于num变量中的十进制值(如.3,.99,2.12,99.1)等.有人可以帮我理解差异以及此函数的工作原理