У меня была эта проблема.
if (obj && typeof obj === 'function') { ... }
продолжал выдавать ошибку ссылки, если obj оказался неопределенным.
В итоге я сделал следующее:
if (typeof obj !== 'undefined' && typeof obj === 'function') { ... }
Коллега указал мне, что проверка, если это !== 'undefined'
, а затем === 'function'
, конечно, избыточна.
Simpler:
if (typeof obj === 'function') { ... }
Много чище и прекрасно работает.