# Задания по базовому синтаксису

## Порядок оформления

* Создать репозиторий с именем shed-js-core-task-02 на github.com.
* В репозитории создать файлы `index.html` и `index.js` и папку `js` на одном уровне.&#x20;
* В папке `js` создавать отдельный файл с именем по номеру задачи.&#x20;
* Все файлы из папки `js` импортировать в корневой файл index.js.
* Файл index.js подключить через тег `script` в файл index.html.

1. ### переменные, объявление и инициализация

   <https://youtu.be/PPOz4Xp1rOM>

   ### примитивы

   <https://youtu.be/yQ5esxiMCKE>

   #### явное приведение к строке

   <https://youtu.be/q-ftaOgUmuw>

   #### явное приведение к числу

   <https://youtu.be/Oes-x8Ebb6I>

   #### явное приведение к булю

   <https://youtu.be/jv566GdyUrM> \
   Пересмотреть, прописать руками все и мне ссылку на репозиторий с кодом
2. Напиши условные выражения с помощью констуркции if...else, которая выводит в консоль браузера сообщение \`Условие выполнено!\`, если условие приводится к true и \`Условие не выполнено!\` в противном случае.\
   Указывай в условиях следующие выражения:\
   a) 1 == true\
   b) 0 == false\
   c) "" == true\
   d) "\_" == false\
   e) NaN == false\
   \*объясни почему в каждом из выражений условие выполняется или не выполняется.
3. Перепиши все созданные условные выражения из задания 2 с помощью тернарного оператора.
4. Объяви две переменные хранящие название и цену товара: `name` и `price`. \
   Присвой переменным следующие характеристики товара (сразу при объявлении): название: `Генератор защитного поля` \
   цена: `1000` \
   Используя шаблонную строку и интерполяцию, выведи в консоль информацию о товаре, чтобы получилось: \
   `'Выбран «Генератор защитного поля», цена за штуку 1000 кредитов'`. \
   Присвой товару новую цену - 2000 \
   Используя шаблонную строку и интерполяцию, выведи в консоль информацию о товаре, чтобы получилось: \
   `'Выбран «Генератор защитного поля», цена за штуку 2000 кредитов'.`
5. &#x20;Объяви две переменные хранящие имя пользователя и сообщение приветствия: `userName` и `greeting`\
   Переменная с именем пользователя должна принимать данные через окно ввода. Используя шаблонную строку и интерполяцию выведи в консоль информацию товаре, получится: \
   `'Имя пользователя, приветствие'`
6. Объяви три переменные с именами `var1`, `var2` и `var3` соответственно.\
   Присвой им значения: `1`, `0`, `true` \
   Выведи в консоль результаты сравнения: \
   `var1 > var2` \
   `var1 == var3`\
   `var1 === var3`\
   `var1 != var3`\
   `var2 != var3`\
   `var1 > var2 == var3`\
   `var1 > var2 > var3`\
   Напиши в комментарии после команды console.log, \
   `ответ из консоли // объясни почему получаются такие ответы`
7. Объяви две переменные `alfa` и `beta` со значениями `0.2` и `0.4`\
   Запиши результат суммы этих переменных так, чтобы получилось 0.6 в переменную `result`\
   Выведи результат в консоль.
8. Объяви переменную `tetra`\
   Присвой ей значения: `12px`, `13.34em`.\
   Выведи результат в консоль и укажи результат в комментарий после console.log.
9. Выведи в консоль наибольшее и наименьшее число из указанных \
   `(2, 34, 99, 3, 22, 36, 733, 18)`
10. Объяви переменную `random`.\
    Пусть она принимает рандомное целое число от `3` до `19` включительно.\
    Выведи результат в консоль.
11. Напиши скрипт проверки количества товаров на складе. \
    Есть переменные `total` (количество товаров на складе) и \
    `ordered` (единиц товара в заказе). \
    Сравни эти значения и по результатам выведи: \
    Если в заказе указано число, превышающее количество товаров на складе, то выведи сообщение `"На складе недостаточно товаров!"`. \
    В другом случае выводи сообщение `"Заказ оформлен, с вами свяжется менеджер"`. \
    Проверь работоспособность кода с разными значениями переменной `ordered`, например `20`, `80` и `130`. \
    `const total = 100; const ordered = 50;`
12. Напиши скрипт имитирующий авторизацию администратора в панели управления. \
    Есть переменная `message` в которую будет записано сообщение о результате. \
    При загрузке страницы у посетителя запрашивается пароль через `prompt()`: \
    \- Если нажали Cancel, записать в message строку `'Отменено пользователем!'` \
    \- В другом случае, если введен пароль который совпадает со значением константы `ADMIN_PASSWORD`, записать в message строку `'Добро пожаловать!`'\
    \-  В противном случае, то есть если ни одно из предыдущих условий не выполнилось, записать в `message` строку `'Доступ запрещен, неверный пароль!'.` \
    После всех проверок вывести в `alert` значение переменной `message`. \
    `const ADMIN_PASSWORD = 'jqueryismyjam'; let message;`
13. На счету пользователя есть `23580` кредитов, значение хранится в переменной `credits` (создай и присвой). \
    Пользователь решает купить ремонтных дроидов, которые стоят по `3000` кредитов за штуку. \
    Цена одного дроида хранится в переменной `pricePerDroid` (создай и присвой). \
    При посещении страницы, используя `prompt`, необходимо спросить количество дроидов которые пользователь хочет купить и сохранить в переменную. \
    Напиши скрипт который: \
    \- Если в `prompt` была нажата кнопка `Cancel`, выводит в консоль сообщение `'Отменено пользователем!'`. \
    \- В противном случае, рассчитывает общую цену заказа и сохраняет в переменной `totalPrice`. \
    \- Проверь, сможет ли пользователь оплатить заказ, если сумма к оплате превышает количество кредитов на счету, выводи в консоль сообщение `'Недостаточно средств на счету!',`\
    \- в противном случае необходимо посчитать остаток кредитов на счету и вывести сообщение `'Вы купили [число] дроидов, на счету осталось [число] кредитов.'.`
14. Пользователь может оформить доставку товара к себе в страну, указав ее при посещении страницы в prompt. \
    Учти, пользователь может ввести имя страны не только буквами нижнего регистра, а к примеру 'кИтАЙ'. \
    Напиши скрипт который выводит сообщение о стоимости доставки в указанную страну. Обязательно используй `switch`. \
    Формат сообщения: `'Доставка в [страна] будет стоить [цена] кредитов'`. \
    Но доставка есть не везде, если указанной страны нет в списке, то выводи в `alert` сообщение `'В вашей стране доставка не доступна'.` \
    Ниже приведен список стран и стоимость доставки. \
    `Китай - 100 кредитов` \
    `Чили - 250 кредитов` \
    `Австралия - 170 кредитов` \
    `Индия - 80 кредитов` \
    `Ямайка - 120 кредитов`
15. Напиши скрипт который просит посетителя ввести число в `prompt` до тех пор, пока посетитель на нажмет `Cancel` и каждый раз добавляет введенное значение к общей сумме. \
    При загрузке страницы пользователю предлагается в prompt ввести число. \
    Ввод добавляется к значению переменной `total`. \
    Операция ввода числа продолжается до тех пор, пока пользователь не нажмет кнопку `Cancel` в `prompt`. \
    После того как пользователь прекратил ввод нажав кнопку `Cancel`, показать `alert` со строкой `'Общая сумма чисел равна [сумма]'`. \
    \- Делать проверку того, что пользователь ввел именно число, а не произвольный набор символов, не нужно. Если хочешь, в случае некорректного ввода, показывай alert с текстом 'Было введено не число, попробуйте еще раз', при этом результат prompt плюсовать к общей сумме не нужно, после чего снова пользователю предлагается ввести число в `prompt`. \
    `let input;` \
    `let total = 0;`
