parseInt(0xf)为什么返回15?

parseInt(0xf)为什么返回15?

parseInt(0xf)为什么返回15?

为什么不像parseInt(8px)一样返回0?

两个参数是什么意思?第二个参数就16一个默认值?

“parseInt()会忽略字符串前的空格,直至找到第一个非空格”这句话又是什么意思呢?为什么这句话可以理解为提取的内容必须以数字开头?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
没有马甲线的安琪拉 2017-05-18 16:37:39

二进制的10,对应的十进制表示数据就是2。

八进制的10,对应的十进制表示数据就是8。

十六进制的10,对应的十进制表示数据就是16。

只是恰好等于第二个参数而已,你换换别的测试一下就能看出来不同了。

至于070,跟浏览器版本有关,ECMAScript版本小于ECMAScript 5,当字符串以"0"开头时默认使用八进制,ECMAScript 5使用的是十进制,所以在解析("070") 可能输出56,也可能输出70.

慕粉1902362591 2017-05-18 08:26:24

var num5 = parseInt("070"); //56(八进制)   这个不懂。这里为什么是八进制,我console.log()之后也是70啊;

 console.log(parseInt('10',2)) // 按二进制解析

    console.log(parseInt('10',8))   // 按八进制解析

    console.log(parseInt('10',10))  // 按十进制解析

    console.log(parseInt('10',16))  // 按十六进制解析

这个也不懂,为什摸console.lo的结果是后面的数字而不是前面多少进制运算后的结果

  • 第一个问题哦,js语言是有一系列标准的,就是ECMAScript,不同用户采用的浏览器不同,有的浏览器目前采用的还是ECMAScript5版本以下的来解析js语言的,按照Angel_mimi同学的扩展的来说,如果采用5版本以下的浏览器在遇到0开头的,就是默认他是8进制数,就会把'070'解析成56,如果是采用5版本的,那么对这个'070'这个解析出来的就可能是70也可能是56,。接下来那个问题,console.log()的结果并不是后面的数字,以parseInt('10',2)为例,如果用口语表达的话可以这么理解,告诉浏览器:我想写一个数字,但是我一不小心写成字符串形式了,你帮我转化成十进制的整数吧,我想写的是数字10,但是我写的时候,写的不是十进制里面的10,而是二进制里面的10。所以这个时候浏览器做的事其实有两个,一个把字符串'10'转化成数字10,第二个把这个二进制的10转化成十进制的整数,那转化出来就是2.
    2017-05-24 23:47:50
  • 非常感谢码了这摸多字,这摸详细的回答我
    2017-06-21 02:47:47
小于飞飞 2017-01-17 18:13:23

parseInt()函数转换:

1.此函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空字符串字符。

2.如果第一个字符不是数字或者负号,就会返回NaN;

3.如果第一个字符时数字字符,就会继续解析第二个字符,直到解析完后续字符或遇到了一个非数字字符。

4.如果字符串中的第一个字符是数字字符,parseInt()也能够识别出各种整数格式(即十进制、八进制、十六进制)。也就是说,字符串以 “0x”开头且后跟数字字符,就会将其当作一个十六进制整数;字符串以“0”开头且后跟数字字符,则将其当作一个八进制数来解析。

   var num1 = parseInt("123red"); //123
  var num2 = parseInt(""); //NaN
  var num3 = parseInt("0xA") //10(十六进制)
  var num4 = parseInt("35.5"); //35
  var num5 = parseInt("070"); //56(八进制)
  var num6 = parseInt("70"); //(70)十进制
  var num7 = parseInt("0xF") //15(十六进制)
  
    // parseInt()传入两个参数的时候
    console.log(parseInt('10',2)) // 按二进制解析
    console.log(parseInt('10',8))   // 按八进制解析
    console.log(parseInt('10',10))  // 按十进制解析
    console.log(parseInt('10',16))  // 按十六进制解析

希望对你有帮助,祝学习愉快,欢迎采纳。



  • 提问者 懵逼的我 #1
    ‘字符串以 “0x”开头且后跟数字字符,就会将其当作一个十六进制整数;’数字字符包括字母吗?
    2017-01-18 09:57:22
  • 小于飞飞 回复 提问者 懵逼的我 #2
    你说的字母a~z是吧,注意,16进制的表示数是:0~9 A~f , 超这个范围的字母按第三条处理。希望对你有帮助,祝学习愉快,欢迎采纳。
    2017-01-18 10:05:03
  • 提问者 懵逼的我 回复 小于飞飞 #3
    谢谢回答!
    2017-01-18 10:34:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师