String.prototype.match进行==判断
今天发现一个String.prototype.match的奇葩用法
export const isWeChat = (() => {let ua = window.navigator.userAgent.toLowerCase();return ua.match(/MicroMessenger/i) == "micromessenger";
})();
这是我在网站上找到的一个判断是否是微信浏览器的方法,不知道有没有注意到这句话ua.match(/MicroMessenger/i) == "micromessenger"
,但是match
方法返回的是RegExpMatchArray | null
类型的数据,那么这里用== micromessenger
,判断是什么意思呢?
其实RegExpMatchArray
是一个伪数组,当进行== micromessenger
判断的时候会进行类型转换,这里也就是会调用toString
方法,所以就可以这样判断了。具体细节大家可以查询一下有关js类型转换的知识。