JS类型及有效性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z772532526/article/details/82494975

一、是否为对象或者数组,空数组及空对象有效性

var arr = []; 
var obj = {};

/**********类型判断**********/
//数组
×:typeof arr; //object
√:arr instanceof Array; //true
//对象
×:typeof obj; //function
√:obj instanceof Object; //true


/**********有效性**********/
//数组及对象
×:if(arr)和if(obj) //都是true
√:if(arr.length) 或者 if(arr == false);//空数组等于false
√:if(Object.keys(obj).length);//空对象即不等于true也不等于false
//0,'0','',' '
if(0)  和 if('')  显而易见是false的
if('0')和 if(' ') 是true,因为无论'0'还是' '都是有效的字符串
然而:'0' == false 和 ' ' == false 也是true

二、js类型测试代码

var arr = [], fn = function(){}, obj = {},sym = Symbol();

console.log(typeof 1)
console.log(typeof '1')
console.log(typeof true)
console.log(typeof undefined)
console.log(typeof null + '特殊')
console.log(typeof sym)

console.log(typeof arr)
console.log(typeof fn)
console.log(typeof obj)

console.log(typeof Function)
console.log(typeof Object + '特殊')


console.log(arr instanceof Array, arr instanceof Object);
console.log(fn instanceof Function, fn instanceof Object);
console.log(obj instanceof Function, obj instanceof Object);

console.log(Function instanceof Object, Object instanceof Function);

console.log(undefined instanceof Object, undefined instanceof Function);
console.log(null instanceof Object, null instanceof Function);

三、总结:
1.对象,数组是不能用typeof判断的。
2.typeof能出来的有number,string,boolean,undefined,object,function。
3.null的类型是object(被沿用的一个设计错误),但不是Object的实例。
4.Object 和 Function 互为实例。
5.fn是Function的实例也是Object的实例,obj是Object的实例不是Function的实例。

猜你喜欢

转载自blog.csdn.net/z772532526/article/details/82494975