Pamiętam, że otrzymywałem ten błąd dużo wcześniej. Dzisiaj chciałem go pokazać znajomemu, który nie jest zaznajomiony z Javascriptem. Zamiast tego Chrome i Safari dały mi coś takiego:
> const o = {};
< undefined
> o.doge()
< TypeError: o.doge is not a function (In 'o.doge()',' 'o.doge' is undefined)
Chrome i Firefox również wydają się być przyjazne dla użytkownika.
Jak mogę otrzymać oryginalny błąd bez tego pomocnego komunikatu?
2 odpowiedzi
Nigdy nie dostaniesz tego błędu w nowoczesnej przeglądarce; błąd pochodzi z samego silnika js, a nie z przeglądarki; a jeśli nie ma innych niż to Type Error
, nowoczesne silniki zwrócą bardziej przyjazny dla programistów błąd, stosując (podobne) /(w+)/
wyrażenie regularne do tego, co kiedykolwiek wpisano wcześniej ()
i umieszczając je w komunikat o błędzie sprawdź:
v8 (chrome) szablony wiadomości, dzięki którym ciąg błędu (wiersz 51, 52):
T(CalledNonCallable, "% is not a function")
I szablony wiadomości SpiderMoneky (mozilla) (w linii 51, 54):
MSG_DEF(JSMSG_NOT_FUNCTION, 1, JSEXN_TYPEERR, "{0} is not a function")
niepołączalny przypadek testowy w wersji 8 i przypadek testowy.
Zatem jedynym sposobem na wyświetlenie komunikatu o błędzie undefined is not a function
w nowoczesnej przeglądarce jest wykonanie undefined()
:)
undefined()
Możesz po prostu spróbować znaleźć i pobrać starszą wersję przeglądarki, która zarejestrowała błąd original
. (jeśli ta wersja jest nadal dostępna publicznie).