1.JS数据类型分为原始类型和引用类型
(a)原始类型:
number,string,boolean,undefined,null
(b)引用类型:
array,object,function
2.number:
(1)在JS里如果要用八进制表示数字,要在数字前面加入一个0
var oNum=070;
document.write(‘oNum=’+oNum+’<br>’);
运行结果为:oNum=56
十六进制就是加0x
(2)科学记数法
1.12E2表示的是1.12*(10^2),小写的e也是可以的
(3)找计算机里的最大值与最小值:
var bNum=Number.MAX_VALUE;
document.write('bNum='+bNum+'<br>');
var sNum=Number.MIN_VALUE;
document.write('sNum='+sNum+'<br>');
运行结果:
找到一个比sNum还小的数字,那么计算机就会默认它为0.
因为计算机里的数字是离散的,要么是这个数要么是那个数,中间有些数字是不可表达的。最小值指的是大于0的最小值
(4)
iNum=Number.POSITIVE_INFINITY;
document.write('iNum='+iNum+'<br>');
positive表示正,infinity表示无限的意思。
表示的是无限大的数,显示结果为:iNum=Infinity。
即这个数是比MAX_VALUE还大的数。
如果代码为:
iNum=Number.MAX_VALUE*1.1;
document.write('iNum='+iNum+'<br>');
运行结果为
iNum=Infinity
虽然两个数的数值不等,但是在计算机里超过最大值就把它认定为最大值,所以两个infinity是无法比较大小的。证明:
iNum=Number.MAX_VALUE*1.1;
document.write('iNum='+iNum+'<br>');
document.write('iNum==Number.POSITIVE_INPINTY='+(iNum==Number.POSITIVE_INFINITY)+'<br>');
运行结果:
但是如果去掉中间的括号则其他东西都没有了,直接出现了一个false。这与运算符的优先级有关。
因为运算有优先级,+的优先级大于==。所以在去掉()以后,先进行加法运算,然后才是==的判断
两个字符串不相等,所以输出为false
isFinite()判断是否是有限的。
判断一个数是否超过最大的数用这个方式判断。如果超过输出false,如果没有则输出true。
(5)JS面试经常问:
NaN意义:说明不是一个数。
输出:
甚至在document里把NaN改成iNum,结果也是false
严格等也是false(===);
那么要判断NaN就要用一个函数:isNaN:
输出的是(isNaN)true