lodash源码分析之isString
本文为读 lodash 源码的第一百六十五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
import getTag from './.internal/getTag.js'
源码分析
isString
用来判断传入的 value
值是否为 string
类型。
源码如下:
function isString(value) {
const type = typeof value
return type === 'string' || (type === 'object' && value != null && !Array.isArray(value) && getTag(value) == '[object String]')
}
如果对于一判的字面量判断,直接用 typeof value === 'string'
即可以判断是否为 string
类型。
但是对于使用 new String()
构造函数创建出来的字符串对象,使用 typeof
检测时,得到的结果会是 object
。
因此对于这种情况,需要使用 Object.prototype.toString.call
来检测,也即 lodash
封装好的函数 getTag
。
同时,出于性能的考虑,在调用 getTag
检测之前,排除掉 value
为 null
和 undefined
的情况,也即 value != null
,还有排除数组的情况,也即 !Array.isArray(value)
,避免调用 getTag
做太多无效的检测,影响性能。
License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面