Подтвердить что ты не робот

Почему typeof (/./)! == 'function' используется в подчеркивании

Я читал источник _.isFunction() и видел эту строку:

if (typeof (/./) !== 'function') {

и я не понимаю, почему это там. /./ - это регулярное выражение, которое всегда похоже на тип object. Почему бы _.isFunction не было переопределено, если тип /./ был function?

4b9b3361

Ответ 1

Некоторые версии различных движков JavaScript допускают вызов RegExp в качестве другого способа использования .exec():

var pattern = /./;

pattern('abc');
pattern.exec('abc');

И, поскольку они были Callable, typeof рассмотрели их function s:

Тип val: объект (собственный или хост и реализует [[Call]])
Результат: "function"

Насколько я знаю, текущие версии не проявляют этого поведения и будут бросать TypeError. Но, если вы заинтересованы в обратной совместимости, в качестве Underscore, вам может потребоваться проверить его.