javascript应该注意的小case--数据类型

来源:未知 责任编辑:责任编辑 发表时间:2015-01-01 13:15 点击:

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

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Gb2312转utf-8编码的方法(vbs+js)
  • 如何使用Ajax技术开发Web应用程序(1)
  • js跳转路径问题
  • JavaScript模仿桌面窗口
  • 用js检测两个线段是否相交
  • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
  • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
  • 我是如何去了解jquery的(六),案例之幻灯片轮换
  • Jquery封装幻灯片效果
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1