ReferenceError: math is not defined — что это означает

Пред­ставь­те такое: вы дела­е­те онлайн-калькулятор на JavaScript и хоти­те реа­ли­зо­вать, напри­мер, функ­цию воз­ве­де­ния в сте­пень. Вы идё­те в Яндекс, вби­ва­е­те в поиск «воз­ве­де­ние в сте­пень javascript». По пер­вой стро­ке в резуль­та­тах всё понят­но: нам нуж­на функ­ция math.pow() из стан­дарт­ной мате­ма­ти­че­ской биб­лио­те­ки math. Пишем код:

// возводим число Х в степень У и отправляем в переменную result
result = math.pow(x,y);

Этот код при запус­ке выва­ли­ва­ет­ся с ошибкой:

❌ ReferenceError: math is not defined

Это озна­ча­ет: «Я не знаю, что такое math, поэто­му не буду это выпол­нять». При этом вы точ­но уве­ре­ны, что всё в поряд­ке, пото­му что все осталь­ные сай­ты дают имен­но такую же команду.

Но всё про­ще, чем вы думаете.

Что делать с ошибкой ReferenceError: math is not defined

Дело в том, что в JavaScript все име­на встро­ен­ных объ­ек­тов пишут­ся с боль­шой бук­вы. Math — тоже встро­ен­ный объ­ект, поэто­му его тоже нуж­но писать с боль­шой бук­вы. Что­бы испра­вить нашу ошиб­ку, это­го будет достаточно:

// возводим число Х в степень У и отправляем в переменную result
result = Math.pow(x,y);

Теперь ошиб­ки нет, и мы можем про­дол­жать делать свой онлайн-калькулятор.

Объясните подробнее

JavaScript — реги­стро­за­ви­си­мый язык. Это зна­чит, что он раз­ли­ча­ет строч­ные и про­пис­ные бук­вы в назва­ни­ях пере­мен­ных, коман­дах и функ­ци­ях. Напри­мер, hello, Hello и HELLO — три раз­ные пере­мен­ные с точ­ки зре­ния JavaScript.

По этой при­чине нуж­но пере­про­ве­рять все коман­ды, кото­рые вы нахо­ди­те на любых сай­тах — воз­мож­но, там есть ошиб­ка в син­так­си­се. А ино­гда про­грам­мист про­сто забы­ва­ет напи­сать нуж­ную коман­ду с боль­шой бук­вы. Такие дела.