JavaScript 知识点之数据类型

页面导航:首页 > 网络编程 > JavaScript > JavaScript 知识点之数据类型

JavaScript 知识点之数据类型

来源: 作者: 时间:2016-02-20 09:49 【

因为网上相关的教程很多,接触过其它编程语言的朋友们应该很容易上手,我在此就不多写了。接下来我只写一些我认为在学习过程中容易出问题的地方。一、数据类型划分NumberStringB
因为网上相关的教程很多,接触过其它语言的朋友们应该很容易上手,我在此就不多写了。接下来我只写一些我认为在学习过程中容易出问题的地方。
 
一、数据类型划分
Number
String
Boolean
Object
Function
Array
Date
RegExp
Null
Undefined
可以使用typeof查看变量的类型,typeof运算符产生的值有number, string, boolean, undefined, function, object. 但是请注意,如果运算数是一个数组或null, 那么结果是object.
 
二、Number
在JavaScript中,浮点与整数间没有区别。事实上,JavaScript中的每个数字都表示使用双精度64位格式IEEE 754。简单理解,所有数字都是浮点。在处理浮点数的时候一定要小心,比如:
 
1 alert(0.1 + 0.2 === 0.3); // false
2 alert(0.1 + 0.2 === 0.30000000000000004); // true
Infinity和-Infinity
即正无穷和负无穷
 
1 alert(1 / 0); // Infinity
2 alert(-1 / 0); // -Infinity
NaN
NaN,即非数值(Not a Number)。 它表示的不是一个数字,尽管typeof NaN === 'number'; 返回的是true. 它是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。
 
可以通过Number.NaN 得到NaN 值,任何与NaN 进行运算的结果均为NaN. NaN不等于任何值,包括它自己。
 
1 alert(Number.NaN); //NaN
2 alert(NaN + 1); //NaN
3 alert(NaN === NaN) //false
4 alert(NaN !=== NaN) //true
可以用isNaN来判断这个值到底是不是NaN。isNaN()函数在接收到一个值之后,会尝试将这个值转换为数值。
 
1 alert(isNaN(25)); //false,25 是一个数值
2 alert(isNaN('25')); //false,'25'是一个字符串数值,可以转成数值
3 alert(isNaN('hi')); //true,'hi'不能转换为数值
如果我们要检测一个变量是真的是数字而不是NaN, Infinity,或者通过字符串转换过来的,我们可以借助isFinite函数。isFinite可以去掉NaN, Infinity,但会尝试将这个值转换为数值。所以我们可以这样写:
 
1 var isNumber = function isNumber(value)
2 {
3     return typeof value === 'number' && isFinite(value);
4 }
6 alert(isNumber('10')); // false
parseInt
parseInt可以把字符串转换为整数。它遇到非数字时会停止解析。
 
1 alert(parseInt('12.34')); //12,去掉小数点后面的
2 alert(parseInt('12.34abc56')); //12,去掉小数点后面的,遇到非数字时会停止解析
3 alert(parseInt('abc12.34')); //NaN,如果第一个不是数值,就返回NaN
4 alert(parseInt('')); //NaN,空返回NaN
parseInt除了能够识别十进制数值,也可以识别八进制(我实验后发现只是对低版本有效,FF,Chrome会将前导0去掉)和十六进制。
 
1 alert(parseInt('070')); //56=>八进制(IE6);70=>FF,Chrome会将前导0去掉
2 alert(parseInt('080')); //0=>(IE6)八进制中8,9是无效的,按0处理; 80=>FF,Chrome会将前导0去掉
3 alert(parseInt('0xA')); //10,十六进制
4 alert(parseInt('0xAyz')); //10,十六进制,yz 被自动过滤掉
同时parseInt还提供了第二个参数,用于解决各种进制的转换。这也是推荐的写法,以免发生像上面例子中不同浏览器有不同处理的问题。
 
1 alert(parseInt('101010', 2)); // 42, 二进制
2 alert(parseInt('0xAF')); //175,十六进制
3 alert(parseInt('AF',16)); //175,第二参数指定十六进制,可以去掉0x 前导
4 alert(parseInt('070', 8)); //56, 八进制
parseFloat
parseFloat是用于浮点数值转换的,从第一位解析到非浮点数值位置。但它是不认十六进制的。
 
1 alert(parseFloat('0xA')); //0,不认十六进制
2 alert(parseFloat('1.234e7')); //12340000,可以把科学技术法转成普通数值
三、String
String类型用于表示由于零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号(")或单引号(')表示。字符串的很多方法都会和正则表达式一起使用,等介绍正则表达式的时候再详细说明,这里就先不多写了,只先说两点:
 
提取字符串中的一个字符
1 var name = 'Wendy';
2 alert(name.charAt(1)); //e
如果写成name[1]在IE6下会显示undefined,所以使用时要慎重。
 
提取字符串的某个部分
推荐使用slice, 因为substring不能处理负数参数。详细用法请看w3c之slice
 
四、Boolean
Boolean 类型有两个值:true 和false.
任何值都可以转为Boolean,遵循着以下原则:
1. false, 0, 空串(""), NaN, null, undefined均转为false
2. 其余值转为true
 
五、undefined和null
undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null.
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<