javascript应该注意的小case--数据类型(2)
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()的方法,把自身转为字符串类型。
相关新闻>>
- Javascript 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
- 好好学一遍JavaScript 笔记(一)——基础中的基础
- 好好学一遍JavaScript 笔记(二)——encode、数组、对象创建
- 好好学一遍JavaScript 笔记(三)——StringBuffer、prototype
- 好好学一遍javaScript 笔记(四)——Attribute、HTML元素、文档碎
- 好好学一遍JavaScript 笔记(五)——正则表达式基础
- 好好学一遍JavaScript 笔记(六)——正则表达式基础二
- 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
- 好好学一遍JavaScript 笔记(八)——冒泡型事件、捕获型事件
- JavaScript详解
- 发表评论
-
- 最新评论 更多>>