我正在阅读该_.isFunction()
函数的源代码并看到以下行:
if (typeof (/./) !== 'function') {
我不明白为什么会在那里。/./
是一个看起来总是有类型的正则表达式object
。为什么不会_.isFunction
被重新定义,如果/./
类型是function
?
各种JavaScript引擎的某些版本已允许将调用 RegExp
作为另一种使用方式.exec()
:
var pattern = /./;
pattern('abc');
pattern.exec('abc');
而且,因为它们是可赎回,typeof
认为他们是function
小号:
val的类型:对象(本机或主机,并且确实实现[[Call]])
结果:"function"
据我所知,当前版本没有表现出这种现象,并且会抛出TypeError
。但是,如果您关心的是向后兼容性(如Underscore),则可能需要检查一下。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句