一、typeof()
识别所有值类型;number,string,boolean
识别函数类型,typeof(函数a)会返回Function
识别引用类型,但是无法区分对象,数组以及 null,都会返回Object
NaN 会被识别为 number,尽管 NaN 是 Not-A-Number 的缩写,意思是"不是一个数字"。
识别数组需要用Array.isArray(),返回值是true/false
<script>
//判断变量类型
function type(num) {
return typeof num
}
// 判断列表
const num1 = 1
console.log(type(num1)) //num
const num2 = '66'
console.log(type(num2)) //string
const num4 = { id: '1', nbame: '11' }
console.log(type(num4)) //object
const num5 = [1, 2, 3]
console.log(type(num5)) //object,数组可用Array.isArray(),返回true/false
const x = function () { }
const num6 = x
console.log(type(num6)) //funtion
// 判断数组
function sum(a) {
return Array.isArray(a)
}
const fn = [1, 2, 3]
console.log(sum(fn)) //true
</script>
二、Object.prototype.toString.call
使用Object.prototype.toString.call 的方式来判断一个变量的类型非常准确,会返回一个[object XXX] 样式的字符串。
<script>
// 二,Object.prottotype.toString.call()
const a = 6
console.log(Object.prototype.toString.call(a)) //[object Number]
const b = '6'
console.log(Object.prototype.toString.call(b)) //[object Object]
const c = { a: 6 }
console.log(Object.prototype.toString.call(c)) //[object Object]
const d = function () { }
console.log(Object.prototype.toString.call(d)) //[object Function]
const e = [1, 2, 3]
console.log(Object.prototype.toString.call(e)) //[object Array]
</script>
三、instanceof方法
用来检测引用数据类型,值类型都会返回 false。
<script>
// 三,instanceof方法 ,返回值true/false
var x1 = []
console.log(x1 instanceof Array); // 输出:true
var y1 = {}
console.log(y1 instanceof Object); // 输出:true
var z1 = function () { };
console.log(z1 instanceof Function); // 输出:true
</script>