关于JavaScript中的toString()方法的奇怪问题

vara=255;document.write(a.toString(16));这段代码输出ff。是正确的,在javascript中会自动把值类型的数据转换为其对应的封装... var a=255;
document.write(a.toString(16));这段代码输出ff。是正确的,在javascript中会自动把值类型的数据转换为其对应的封装类型,以便调用它的方法。

那么下面的程序为什么报错呢?

document.write(255.toString(16));

报告错误?

而如果改成下面的有正确了:
document.write((255).toString(16));
只不过在255上加了一个括号而已。
百思不得其解,希望各位大虾给出一个合理的回答。
用"255".toString(16)我试过了,不能正确转换为16进制。而是输出255

貌似xifo 的回答稍微要合理一些,但不知道是不是正确的哦。还请各位在替我想想哦。

但不要说什么解释器不是万能的之类的话,
如果这样,document.write((255).toString(16)); 这句代码怎么又是正确的呢?也不过是多了一个括号而已。。
展开
 我来答
xifo
推荐于2017-09-12 · TA获得超过898个赞
知道小有建树答主
回答量:325
采纳率:0%
帮助的人:320万
展开全部
事情是这样的,想通了就明白了:

JavaScript是一种面向对象的脚本语言,对象不是完全面向对象。你用
var a = 255;
实际上创建了一个Number类型的对象,你
document.write(a.toString(16));
实际上是调用了Number对象的toString()方法。

而255在JavaScript里只是一个数值型的常量,所以255.toString(16)会出现解析错误,原因是JavaScript中并非“一切皆是对象”,而完全面向对象的Ruby就可以使用类似的用法。

但是,(255).toString(16)多了一对括号,在解析.toString(16)之前,已经把前面的部分转换成了一个Number对象,所以可以正常调用。
百度网友2571d37bb
2018-07-27 · 知道合伙人软件行家
百度网友2571d37bb
知道合伙人软件行家
采纳数:1971 获赞数:7905
前端工程师

向TA提问 私信TA
展开全部
定义和用法:
toString() 方法可把一个逻辑值转换为字符串,并返回结果。
语法:
booleanObject.toString()
返回值:
根据原始布尔值或者 booleanObject 对象的值返回字符串 "true" 或 "false"。
抛出:
如果调用该方法的对象不是 Boolean,则抛出异常 TypeError。
提示和注释:
注释:在 Boolean 对象被用于字符串环境中时,此方法会被自动调用。
实例:
在本例中,将创建一个 Boolean 对象,并把它转换成字符串:
<script type="text/javascript">
 
    var boo = new Boolean(true)
    document.write(boo.toString())

</script>
输出:
true
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XMUmeyu
2008-09-18 · TA获得超过1488个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:276万
展开全部
说得很轻松,你想让js 解析器怎么处理 255.toString(16) ?

分析的时候 255.xx 肯定是试着被解析为 255.00 之类的float类型更为合理

解析器也是程序,并不是万能的,如果要兼容这种写法,复杂度得高多少?.划算吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
媒办法
2008-09-18 · TA获得超过606个赞
知道小有建树答主
回答量:834
采纳率:0%
帮助的人:1004万
展开全部
用"255".toString(16)试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式