关于JS的数据类型
简单类型有五种:Undifined, Null, Boolean, Number, String
复杂类型有一种:Object
通过typeof 操作符来获取数据类型,此操作符返回字符串
undifined
boolean
string
number
object
function
类型Undifined
只有一个值,就是undifined
typeof 未初始化的变量,返回undifined
typeof 未声明的变量,返回undifined
Null类型
只有一个值,就是null
typeof null 返回object
Boolean类型
只有两个字面值:true, false
所有类型的值都有与这两个值等价的值
Number类型
表示浮点数的时候最高精度为17位小数,但是精度不如整数
var a = 0.1;
var b = 0.2;
则: a + b = 0.30000000000000004
所以,使用浮点数需要注意精度问题。可以使用如下的方法进行:
function accAdd(arg1, arg2) { var r1, r2, m, c; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } c = Math.abs(r1 - r2); m = Math.pow(10, Math.max(r1, r2)) if (c > 0) { var cm = Math.pow(10, c); if (r1 > r2) { arg1 = Number(arg1.toString().replace(".", "")); arg2 = Number(arg2.toString().replace(".", "")) * cm; } else { arg1 = Number(arg1.toString().replace(".", "")) * cm; arg2 = Number(arg2.toString().replace(".", "")); } } else { arg1 = Number(arg1.toString().replace(".", "")); arg2 = Number(arg2.toString().replace(".", "")); } return (arg1 + arg2) / m }
数值的取值范围:
Number.MIN_VALUE
Number.MAX_VALUE
超出取值范围的数值为:Infinity,可以通过isFinite()函数来判断
NaN 表示非数值,本身是一个数值对象
最大的特点是不等于任何值,即使是NaN,isNaN()函数可以判断是否为NaN
数值转换
Number()函数的转换规则
parseInt()
会判断是否符合数值模式,会忽略开头的空格,直到遇到第一个非空字符,解析到第一个非数值为止
parseInt(参数1,16) 表示使用16进制转换,参数含义为进制
parseFloat()
使用方法与上面类似
String类型
Object类型
对象可以通过new来创建。在JS中Object类型是所有它的实例的基础。Object中的方法和属性都存在于更具体的对象中
constructor 构造函数,保存创建当前对象的函数
hasOwnProperty(propertyName) 检查给定的属性是否存在于当前对象中
isPrototypeOf(object) 检查传入的对象是否是当前对象的原型
propertyIsEnumerable(propertyName) 检查给定的属性是否能使用for-in语句来枚举
toLocaleString() 返回对象的字符串表示
toString() 返回对象的字符串表示
valueOf() 返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同