前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript 红皮高程(8)

javascript 红皮高程(8)

作者头像
web前端教室
发布2018-02-06 13:41:28
5770
发布2018-02-06 13:41:28
举报
文章被收录于专栏:web前端教室

今天继续,JS的数值转换。这里面的坑啊, 真是太多了。

JS有三个函数可以把非数值转为数值:

代码语言:js
复制
Number();
parseInt();
parseFloat();

Number()可以用于任何数据类型。换言之,什么都可以往里面放。但是,能转成什么东西就不一定了,来看看规则,巨多:

Boolead,true和false分别转成1和0;

数字,就转成数字了;

null,返回0;

undefined,返回NaN;

字符串:

-字符串就是数字的,那就转为数字。但最左边的0会没有。

-字符串包含十六进制的,转为相同大小的十进制;

-字符串是空的,转为0;

-字符串是上述之外的字符,转为NaN。

-是对象的,就调用对象的valueOf()方法,然后再把根据转完的字符串,返回相应用值。如果是NaN,就调用对象的toString()方法,再按之前的规则转。

--够乱的啊。。

接下来是parseInt(),主要用来处理整数的。它忽略字符串左边的空格。如果第一个字符不是数字或负号,它返回NaN;

就是说,parseInt()转换空字符串,返回NaN。人家Number()处理空字符串返回的是0,,,

parseInt()转换字符串时,只要遇到一个非数字,就不再继续往下走了,例如:

代码语言:js
复制
console.log( parseInt("123abc44") )
//123

parseInt()也能转十六和八进制的数,但它在解析八进制数值时,有分歧。。(第31页),,

所以要给它加上第二个参数,即转换时用的进制基数。这也是JS的坑啊。不知道这些东西,用JQ习惯了,再用原生JS很难写的圆满。

parseFloat就比较好了,这货只解析十进制,其它不认。

JS的数值转换这块,我得好好再复习复习,,面试题的坑这里有许多。

重学javascript 红皮高程(6)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档