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

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

alert(isNaN(0x70));       // false
alert(isNaN("0x70"));     // false
alert(isNaN(false));      // false
alert(isNaN(""));         // false
alert(isNaN(NaN));        // true

       
6,数值转换:Number(),parseInt(),parseFloat()
Number()可以对任何类型的参数进行转换,转换规则如下:
    Boolean类型true转为1,false转为0;
    Number类型,直接返回;
    undefined返回NaN;
    String类型,空字符串转为0,数值类型的字符串会忽略所有前置的0转为相应的整型或浮点型,因此八进制将会被忽略,如果是ox开头的数字字符串,将按十六进制数处理转为相对应的十进制数,其它转为NaN;
    object类型,null返回0,其它会调用该对象的valueOf()对其返回值操作,如果返回NaN,再调用其toString()方法,测定返回值。
alert(Number("1234asdf"));  //  NaN
alert(Number("00070"));     //  70
alert(Number("false"));     //  0
alert(Number(""));          //  0
 
parseInt()和parseFloat只对字符串参数操作。
parseInt()的转化规则:
     它会忽略前面所有的空格,从第一个不是空格的字符开始转化,如果这个字符不是数字或者负号,将返回NaN;或者继续转化下一位置,直到下一个不是数字的位置或者结束位置。这样如“1234abcd”将返回1234,“”返回NaN,”12.3“返回12。
alert(parseInt("1234abcd"));   //   1234
alert(parseInt(""));        //  NaN
alert(parseInt("12.34"));   // 12
 
与Number()不同的是,parseInt()能识别出八进制、十六进制的数值进行对应的转化,但是在浏览器的实现上却出现了问题,IE中会把070转为70,而ff,chrome把070转为56。前面多个0时,相当于只有一个0。
alert(parseInt("070"));  //  ie弹出70,ff,chrome弹出56
 
不过幸好javascript提供了另一个参数来决定要何种(2/8/10/16)进制数来处理。
alert(parseInt("070","8"));  //  都弹出56
  
parseFloat()与parseInt()类似,也会逐个检查字符,直到不是数值的字符或第二个小数点出现。
alert(parseFloat("1234abcd")); //  1234
alert(parseFloat(""));         //  NaN
alert(parseFloat("12.34"));    //  12
alert(parseFloat("12.34.22")); //  12.34
alert(parseFloat("0x23"));     //  0
alert(parseFloat("0323"));     //  323
 
 
6,String类型
几乎所有的类型(null和undefined除外)都会有一个tostring()的方法,把自身转为字符串类型。

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

推荐热点

  • 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