javascript应该注意的小case--数据类型
js的数据类型:Number、String、Boolean、Undefined、Null和Object。我们在js里创建的数据一定是以上几种类型的一种。
1,typeof操作符
js提供了typeof操作符来检测数据的类型,但是typeof操作的结果只会是:number,string,boolean,undefined,object,function中的一个,这个和提供的数据类型是不一致的。
2,undefined类型
如果一个变量声明未赋值之前,它是undefined类型,并且有值是undefined。
要注意的是:如果我们对从未声明过的变量,它也是undefined类型,但是对它进行取值的操作将会产生一个变量未定义的错误。
var message;
alert(typeof message); // undefined
alert(message); // undefined
//var message2;
alert(typeof message2); // undefined
alert(message2); // 错误
3,Null类型
null值表示一个空对象指针,它也只有一个值null。
alert(typeof null); // object
alert(null); // null
另外要注意的undefined值是派生自null值的,就有以下的结果:
alert(undefined == null); // true
尽管如此,但他们两个的作用完全是不一样的,因此我们如果确定一个变量要指向对象,还没有真正指向对象之前,应该在声明它暂时赋值为null。
4,Boolean类型
只有两个值ture,false,并且是区分大小写的,也就是说var isError = False;将产生错误。
js提供了一个Boolean(arg)的函数来将其它类型转为Boolean类型,更有意思也值得注意的特性是js会为流程控制语句(如if)自动调用Boolean类型的转换。
转型的规则如下:
Boolean的flase,String类型的“”,Number类型的0和NaN,Object类型的null,undefined类型的undefined会被认为是false,其它都是true。
5,Number类型
可用来表示分为整数和浮点数,整数又包括八进制(0开头)、十进制(默认)和十六进制(0x开头)。
其中八进制如果有某位超过了7,前面的0将被忽略,被认为是十进制。如070转为十进制是56,而018会认为是18。
浮点数值保存空间是整数的两倍,js会把如1.0、10.这样的数值用转为整数来保存。
要注意的是,尽量不要用基于js浮点数值运算:
alert(0.1 + 0.2); // 输出是0.30000000000000004
另外有几个特殊的值要注意:
Number.MAX_VALUE、Number.MIN_VALUE存储的是所能支持的最大、最小的数,如果超过这个范围将会得到正无穷Infinity、负无穷-Infinity。我们可以用isFinite()函数来判断一个数是不是超出了范围。其中我们可以从Number.NEGATIVE_INFINITY、Number.POSITIVE_INFINITY得到正无穷Infinity、负无穷-Infinity。
另外还有一个要注意的值NaN,任何一个需要返回数值的运算返回的不是数值将返回NaN,它是一个特殊数值,跟任何数值的任何运算都会返回NaN,并且它不与任何值相等包括自己。
另外有isNaN()函数,来判断传入的任意类型参数是不是NaN。isNaN会对参数进行转化,如果能转化为数值,就返回false.这上转化是对整体的一个转化,还会把true转为1,false转为0.如果参数是对象,它会先调用对象的valueOf(),如果不能转为数值,会再次调用toString()来判断。
alert(isNaN("1234asdf")); // true
alert(isNaN(0070)); // false
alert(isNaN("00070")); // false
相关新闻>>
- Javascript 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
- 好好学一遍JavaScript 笔记(一)——基础中的基础
- 好好学一遍JavaScript 笔记(二)——encode、数组、对象创建
- 好好学一遍JavaScript 笔记(三)——StringBuffer、prototype
- 好好学一遍javaScript 笔记(四)——Attribute、HTML元素、文档碎
- 好好学一遍JavaScript 笔记(五)——正则表达式基础
- 好好学一遍JavaScript 笔记(六)——正则表达式基础二
- 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
- 好好学一遍JavaScript 笔记(八)——冒泡型事件、捕获型事件
- JavaScript详解
- 发表评论
-
- 最新评论 更多>>