javascript 红皮高程(8)

今天继续,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()转换字符串时,只要遇到一个非数字,就不再继续往下走了,例如:

console.log( parseInt("123abc44") )
//123

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

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

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

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

重学javascript 红皮高程(6)

原文发布于微信公众号 - web前端教室(webfeel)

原文发表时间:2016-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【面试宝典】java字符串处理技巧

面试官 知道String吗?String是什么类型的?用的时候需要注意什么?String和StringBuffer、StringBuilder的区别都是什么? ...

2926
来自专栏维C果糖

详述 Java 语言中的 String、StringBuffer 和 StringBuilder 的使用方法及区别

1 简介 在 Java 语言中,共有 8 个基本的数据类型,分别为:byte、short、int、long、float、double、boolean和char,...

2125
来自专栏salesforce零基础学习

salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex语言和java很多的语法类似,今天总结的是一些简...

3817
来自专栏Spark学习技巧

Java反射机制深入详解

一.概念   反射就是把Java的各种成分映射成相应的Java类。   Class类的构造方法是private,由JVM创建。   反射是java语言的一个特性...

1.7K7
来自专栏java学习

面试题53(考察求职者对String声明变量在jvm中的存储方法)

(单选题) 1、有如下一段代码,请选择其运行结果() public class StringDemo{ private static final Stri...

3013
来自专栏岑志军的专栏

Swift学习-函数

15710
来自专栏闻道于事

Java之面向对象概述,类,构造方法,static,主方法,对象

一、面向对象概述 面向过程 “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于...

3385
来自专栏赵俊的Java专栏

合并排序数组 Ⅱ

1664
来自专栏微信公众号:Java团长

Java正则表达式入门

1.定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查...

1082
来自专栏海说

Java源码学习 -- java.lang.String

java.lang.String是使用频率非常高的类。要想更好的使用java.lang.String类,了解其源代码实现是非常有必要的。由java.lang.S...

2170

扫码关注云+社区

领取腾讯云代金券