二进制的浮点数不能正确处理十进制的小数, 因此 0.1 + 0.2 不等于 0.3
num = 0.1 + 0.2; //0.30000000000004
建议使用 Decimal.js 库
使用 typeof 运算符返回一个用于识别其运算数类型的字符串。对于任何变量 来说,使用 typeof 运算符总是以字符串的形式返回以下6种类型之一:
typeof 检测 null 值时返回的是 object 而不是 null
function type (o) {
return (o === null) ? "null" : (typeof o);
}
复制代码
注意: typeof 不能检测复杂的数据此类型,以及各种特殊用途的对象,比如 RegExp, Date,Math等
对于Object或Array,可以使用 constructor 属性, 该属性值引用的是原来构造该对象的函数。如果结合 typeof 运算符和 constructor 属性, 基本能够完成数据类型的检测。
value | typeof value | value.constructor |
---|---|---|
var value = 1 | "number" | Number |
var value = "a" | "string" | String |
var value = true | "boolean" | Boolean |
var value = {} | "object" | Object |
var value = new Object() | "object" | Object |
var value = [] | "object" | Array |
var value = new Array() | "object" | Array |
var value = function() {} | "function" | Function |
function className(){} | "object" | className |
但是对于 undefined 和 null 特殊值不能使用constructor, JavaScript 会抛出异常。
对于直接量也不能使用 constructor 需要加上一个小括号
使用 toString() 检测对象类型是最安全、最准确的。 调用 toString()方法把对象转换成字符串, 然后通过检测字符串中是否包含数组所特有的标志字符可以确定对象的类型。
let test = "123"
console.log(Object.prototype.toString.call(test)); // [object String]
test = null
console.log(Object.prototype.toString.call(test)); // [object Null]
test = []
console.log(Object.prototype.toString.call(test)); // [object Array]
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。