一、判断数字类型
function isNumber(obj) { return typeof obj === 'number' && isFinite(obj); }
在JavaScript中,可以通过typeof运算符返回的结果来判断数据类型,但是并不能准确地识别出全部类型。对于数字类型,除了使用typeof运算符之外,还需要使用isFinite函数来排除非数字情况。
此外,对于整数类型,可以通过取模运算符进行判断:
function isInt(num) { return typeof num === 'number' && num % 1 === 0; }
上述代码中,如果num除以1的余数等于0,则它就是一个整数。
二、判断字符串类型
function isString(obj) { return typeof obj === 'string'; }
字符串类型是非常常见的一种数据类型。在JavaScript中,可以通过typeof运算符判断一个变量是否为字符串类型。
另外,有时候还需要判断一个字符串是否为空字符串,可以使用如下代码:
function isEmptyString(str) { return typeof str === 'string' && str.trim() === ''; }
上述代码中,使用了trim方法将字符串两侧的空格去掉,然后再判断是否为空字符串。
三、判断布尔类型
function isBoolean(obj) { return typeof obj === 'boolean'; }
布尔类型只有两个值:true和false。在JavaScript中,可以用typeof运算符判断一个变量是否为布尔类型。
四、判断数组类型
function isArray(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; }
因为JavaScript中的数组是一种特殊的对象类型,所以无法使用typeof运算符判断是否为数组。通常可以使用Object.prototype.toString.call方法来实现:
上述代码中,使用了call方法可以改变this指向,把this指向obj,然后调用toString方法获取其类型信息。
五、判断对象类型
function isObject(obj) { return typeof obj === 'object' && obj !== null && !isArray(obj); }
对于复杂的数据类型,可以使用typeof运算符判断是否为对象类型。但是需要注意排除null和数组类型,因为null的类型也是object。
总结
JavaScript中的数据类型非常丰富,对于不同的数据类型需要使用不同的方法进行判断。在进行类型判断的时候,应该多加注意,尤其是一些特殊情况的处理。