JavaScript基本数据类型注意点

1.在一个函数中定义一个变量我们通常是这样定义的 var message = ‘hi’,该变量使用var操作符定义会使得该变量的作用域属于局部变量,这个变量在函数退出后就会被销毁,例如:

function test(){
    var message = 'hi';
}
test();
alert(message); //error!

这里的变量使用var定义,当离开函数后,该变量会被销毁,要想不被销毁,可以去掉var,那么该变量就会变成全局变量,函数调用完后,该变量还会存在,但是不建议这样做,会污染全局空间。

2.Number类型中的浮点数值

var floatNum1 = 1.; //小数点后面没有数字----解析为1
var floatNum2 = 10.0; //整数----解析为10

由于保存浮点数需要的内存是整数值的2倍,因此如果浮点数值本身表示的是一个整数(如1.0),那么该值就会被转换为整数。

我们知道浮点数的最高精度是17位小数,但是计算的时候其精确度远远不如整数,例如0.1+0.3不等于0.3,而是0.30000000000000004。如:

if(a + b == 0.3) {
    alert('You got 0.3');
}

这是不对的,和不等以0.3,但是如果这两个数是0.05和0.25或者0.15和0.15都不会有问题,因此永远不要测试某个特定的浮点数值。

3.数值转换中的parseInt()函数

var num1 = parseInt('1234blue'); //1234
var num2 = parseInt(''); //NaN
var num3 = parseInt('0xA'); //10 (十六进制)
var num4 = parseInt(22.5); //22
var num5 = parseInt('070'); //56 (八进制)
var num6 = parseInt('70'); //70 (十进制)
var num7 = parseInt('0xf'); //15 (十六进制)

在使用parseInt()解析八进制字面量的字符串时,ECMAScript3和ECMAScript5存在分歧,例如:
例子中的var num5 = parseInt(‘070’); ECMAScript3认为是56(八进制),ECMAScript5认为是70(十进制)。
为了消除上面的误导,可以为这个函数添加第二个参数:转换时使用的基数(即多少进制)。例如:

var num = parseInt('AF', 16); //175
var num1 = parseInt('AF'); //NaN

转换成十六进制的数字,不加第二个参数的话,会出现NaN。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值