Как вызвать `undefined не является функцией` в современных браузерах? - PullRequest
0 голосов
/ 08 марта 2020

Я помню, что получал эту ошибку довольно давно. Сегодня я хотел показать это другу, незнакомому с Javascript. Chrome и Safari вместо этого дал мне что-то вроде:

> const o = {};
< undefined
> o.doge()
< TypeError: o.doge is not a function (In 'o.doge()',' 'o.doge' is undefined)

Chrome и Firefox также кажутся удобными для пользователя.

Как я могу получить оригинальную ошибку, без этого полезного сообщения?

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Вы никогда не получите эту ошибку в современном браузере; ошибка происходит от js самого движка, а не браузера; и если нет других, кроме этого Type Error, современные движки будут возвращать более дружественную для разработчика ошибку, применяя (аналогичное) /(w+)/ регулярное выражение к тому, что когда-либо вводилось до (), и помещая его в сообщение об ошибке, проверьте:

v8 (chrome) шаблонов сообщений , которые будут выдавать строку ошибки (строки 51, 52):

T(CalledNonCallable, "% is not a function")   

и SpiderMoneky (mozilla) шаблоны сообщений (в строках 51, 54):

MSG_DEF(JSMSG_NOT_FUNCTION,            1, JSEXN_TYPEERR, "{0} is not a function")

не вызываемый тестовый пример в v8 и тестовый случай SpiderMokney .


Таким образом, единственный способ сообщения об ошибке undefined is not a function в современном браузере - это undefined():)

undefined()
0 голосов
/ 08 марта 2020

Вы можете просто попытаться найти и загрузить старую версию браузера, в которой произошла ошибка original. (если эта версия все еще общедоступна).

...