JS类型及有效性

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

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 NaN + '也是number类型')
console.log(typeof '1')
console.log(typeof true)
console.log(typeof undefined)
console.log(typeof null + '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的实例。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值