lodash 官方的定义的好处这里就不再赘述了 ,之所以将这个函数抽出来梳理一下,主要的原因是这个函数和其他的函数耦合的不是很强,即使在项目中不使用lodash这个库,依然可以将这个函数单独拿出来使用,虽然短短两行,但是里面的知识点还是很多的。
首先这个函数的实现使用了typeof首先判断了数据类型.
在js中的 typeof 返回六种数据类型:
1.'undefned' 这个值未定义。
2.'bollean' 这个值是布尔值。
3.'string' 这个值是字符串。
4.'number' 这个值是number。
5.'object' 这个值是对象或者null。
6.'function' 这个值是函数。
我们通常认为 函数 和 object 能够很好的判断
但是这里有一个非常重要的问题容易忽视 null在js中使用typeof判断的时候
返回的也是 'object', 因此还需要使用 != null 进行判断。
知识点:
&& 运算符:两边全部为 true 这个表达式才是 true。
使用&&短路操作 如果是value 是 null 则直接返回false
如果 value 不是 null 继续判断判断&&后面的内容 后面用了()看成一个独立的表达式。
|| 运算符:两边只要有一个为true 这个表达式就是 true
因此 如果 type 是'object' 那么后面的 type == 'function'不再执行。
如果 type 是 'function' type == 'object'返回false 继续执行 type == 'function' 返回true。
function isObject(value) {
var type = typeof value; // 使用 typeof 将这个value的数据类型判断出来
return value != null && (type == 'object' || type == 'function');
}
网友评论