fa
Feedback
Фронтендщик

Фронтендщик

رفتن به کانال در Telegram

Все для frontend developer, шуточки, тесты, статьи Администрация/Реклама @vtopua

نمایش بیشتر
1 076
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-57 روز
-1230 روز
آرشیو پست ها
Второй вариант - это сказать, что отсутствие атрибута data-price или data-amount - исключительная ситуация. В этом случае мы
Второй вариант - это сказать, что отсутствие атрибута data-price или data-amount - исключительная ситуация. В этом случае мы будем выбрасывать исключение: function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) {  return elem.dataset.price * elem.dataset.amount;  } else { throw { name: 'ProductCostError', message: 'отсутствует цена или количество у продукта'  }; } } 📌 #instr || Фронтендщик

Первый путь - это сказать, что это нормальное поведение и просто проверять ифами наличие нужных нам атрибутов: function getCo
Первый путь - это сказать, что это нормальное поведение и просто проверять ифами наличие нужных нам атрибутов: function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) {  return elem.dataset.price * elem.dataset.amount;  } else { return 0; // вернем что-нибудь, например, 0 или null или false  } } 📌 #instr || Фронтендщик

Если теперь попробовать посчитать стоимость товара, то результате на экран выведется NaN. Согласитесь, не очень информативно.
Если теперь попробовать посчитать стоимость товара, то результате на экран выведется NaN. Согласитесь, не очень информативно. Получается, нам нужно как-то обезопасится от того, что будут отсутствовать нужные нам атрибуты. Это можно сделать двумя путями. 📌 #instr || Фронтендщик

Найдем стоимость нашего продукта: let product = document.querySelector('#product'); let cost = getCost(product); alert(cost);
Найдем стоимость нашего продукта: let product = document.querySelector('#product'); let cost = getCost(product); alert(cost); Предположим теперь следующую ситуацию: из-за какого-то сбоя на сервере он прислал нам товар, в котором отсутствует цена или количество (или оба сразу), например, вот так: <div id="product" data-product="яблоко" data-price="1000"> </div>  📌 #instr || Фронтендщик

Давайте сделаем функцию, которая будет принимать ссылку на элемент с продуктом и находить полную стоимость товара (цену умнож
Давайте сделаем функцию, которая будет принимать ссылку на элемент с продуктом и находить полную стоимость товара (цену умножать на количество): function getCost(elem) { return elem.dataset.price * elem.dataset.amount;  } 📌 #instr || Фронтендщик

Пример исключения с data- атрибутами в JavaScript Пусть при загрузке страницы сервер создает HTML код, в котором хранится наз
Пример исключения с data- атрибутами в JavaScript Пусть при загрузке страницы сервер создает HTML код, в котором хранится название, цена и количество купленного продукта: <div id="product" data-product="яблоко" data-price="1000" data-amount="5"></div>  📌 #instr || Фронтендщик

Существуют разные способы сделать это. Самый простой - в throw передать объект с ключами name и message: try { throw {name: '
Существуют разные способы сделать это. Самый простой - в throw передать объект с ключами name и message: try { throw {name: 'MyError', message: 'текст исключения'};  } catch (error) { console.log(error.name); // 'MyError'  console.log(error.message); // 'текст исключения'  } 📌 #instr || Фронтендщик

Выбрасывание своих типов исключений в JavaScript Количество встроенных в JavaScript исключений не такое большое и они чаще вс
Выбрасывание своих типов исключений в JavaScript Количество встроенных в JavaScript исключений не такое большое и они чаще всего не могут удовлетворить все наши потребности в разных типах исключений. Поэтому в JavaScript встроена возможность создавать исключения со своим типом. 📌 #instr || Фронтендщик

В JavaScript предусмотрено решение этой проблемы: можно выбрасывать исключения не только типа Error, но и любого встроенного
В JavaScript предусмотрено решение этой проблемы: можно выбрасывать исключения не только типа Error, но и любого встроенного в JavaScript типа ошибки, например, TypeError, SyntaxError, RangeError. Давайте для примера выбросим исключение типа SyntaxError: try { throw new SyntaxError('текст исключения');  } catch (error) { console.log(error.name); // 'SyntaxError'  console.log(error.message); // 'текст исключения'  } 📌 #instr || Фронтендщик

Как вы видите, тип нашего исключения - 'Error'. Такой же тип будет у любых исключений, выброшенных подобным образом. Это, одн
Как вы видите, тип нашего исключения - 'Error'. Такой же тип будет у любых исключений, выброшенных подобным образом. Это, однако, не всегда будет удобно, так как, если у нас могут быть несколько исключений, мы не сможем их отличить друг от друга. 📌 #instr || Фронтендщик

Давайте для примера выбросим исключение типа SyntaxError: try { throw new SyntaxError('текст исключения'); } catch (error) {
Давайте для примера выбросим исключение типа SyntaxError: try { throw new SyntaxError('текст исключения');  } catch (error) { console.log(error.name); // 'SyntaxError'  console.log(error.message); // 'текст исключения'  } 📌 #instr || Фронтендщик

В JavaScript предусмотрено решение этой проблемы: можно выбрасывать исключения не только типа Error, но и любого встроенного
В JavaScript предусмотрено решение этой проблемы: можно выбрасывать исключения не только типа Error, но и любого встроенного в JavaScript типа ошибки, например, TypeError, SyntaxError, RangeError. 📌 #instr || Фронтендщик

Как вы видите, тип нашего исключения - 'Error'. Такой же тип будет у любых исключений, выброшенных подобным образом. Это, одн
Как вы видите, тип нашего исключения - 'Error'. Такой же тип будет у любых исключений, выброшенных подобным образом. Это, однако, не всегда будет удобно, так как, если у нас могут быть несколько исключений, мы не сможем их отличить друг от друга. 📌 #instr || Фронтендщик

Выбрасывание различных типов исключений в JavaScript Давайте выбросим свое исключение и посмотрим, как будет вести себя объек
Выбрасывание различных типов исключений в JavaScript Давайте выбросим свое исключение и посмотрим, как будет вести себя объект с ошибкой в этом случае: try { throw new Error('текст исключения');  } catch (error) { console.log(error.name); // 'Error'  console.log(error.message); // 'текст исключения'  } 📌 #instr || Фронтендщик

Давайте теперь будем перехватывать нашу ошибку и как-то ее обрабатывать: try { alert( div(3, 0) ); } catch (error) { alert('в
Давайте теперь будем перехватывать нашу ошибку и как-то ее обрабатывать: try { alert( div(3, 0) ); } catch (error) { alert('вы пытаетесь делить на 0, что запрещено');  } 📌 #instr || Фронтендщик

Давайте для начала просто попробуем поделить на 0, не перехватывая исключение: alert( div(3, 0) ); В этом случае выполнение с
Давайте для начала просто попробуем поделить на 0, не перехватывая исключение: alert( div(3, 0) ); В этом случае выполнение скрипта прервется и в консоли появится ошибка с текстом 'ошибка деления на ноль' (проверьте). 📌 #instr || Фронтендщик

Давайте будем считать, что деление на ноль запрещено и при попытке сделать это должна возникать исключительная ситуация. Для
Давайте будем считать, что деление на ноль запрещено и при попытке сделать это должна возникать исключительная ситуация. Для этого будем проверять в функции, нет ли попытки делить на 0. Если нет - будем делить, а если да - будем бросать исключение: function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('ошибка деления на ноль');  } } 📌 #instr || Фронтендщик

Выбрасывание исключения заставляет JavaScript считать, что случилась исключительная ситуация. Это значит, что такое исключени
Выбрасывание исключения заставляет JavaScript считать, что случилась исключительная ситуация. Это значит, что такое исключение можно отловить с помощью конструкции try-catch и обработать нужным образом. Давайте посмотрим на примере, как этим пользоваться. Пусть у нас есть функция, которая делит одно число на другое: function div(a, b) { return a / b; } 📌 #instr || Фронтендщик

Давайте разберем синтаксис, необходимый для этого. Для начала исключение нужно создать с помощью команды new Error, параметро
Давайте разберем синтаксис, необходимый для этого. Для начала исключение нужно создать с помощью команды new Error, параметром передав текст исключения: new Error('текст исключения'); Затем это исключение нужно выбросить с помощью команды throw: throw new Error('текст исключения');  📌 #instr || Фронтендщик

Выбрасывание исключений в JavaScript В предыдущих уроках мы изучили два места, в которых JavaScript выбрасывает исключение в
Выбрасывание исключений в JavaScript В предыдущих уроках мы изучили два места, в которых JavaScript выбрасывает исключение в случае каких-то проблем. В вашем проекте, однако, могут быть и другие ситуации, которые для вас являются исключительными, а для JavaScript - нет. В таком случае мы можете создавать и выбрасывать свои, пользовательские исключения. 📌 #instr || Фронтендщик