Особенности JavaScript
Давайте кратко повторим изученный материал и отметим наиболее «тонкие» моменты.
Структура кода
Инструкции разделяются точкой с запятой:
alert('Привет'); alert('Мир');
Как правило, перевод строки также интерпретируется как разделитель, так тоже будет работать:
alert('Привет') alert('Мир')
Это так называемая «автоматическая вставка точки с запятой». Впрочем, она не всегда срабатывает, например:
alert("После этого сообщения ждите ошибку") [1, 2].forEach(alert)
Большинство руководств по стилю кода рекомендуют ставить точку с запятой после каждой инструкции.
Точка с запятой не требуется после блоков кода и синтаксических конструкций с ними, таких как, например, циклы:
function f() < // после объявления функции необязательно ставить точку с запятой >for(;;) < // после цикла точка с запятой также необязательна >
…Впрочем, если даже мы и поставим «лишнюю» точку с запятой, ошибки не будет. Она просто будет проигнорирована.
Строгий режим
Чтобы по максимуму использовать возможности современного JavaScript, все скрипты рекомендуется начинать с добавления директивы «use strict» .
'use strict'; .
Эту директиву следует размещать в первой строке скрипта или в начале тела функции.
Без «use strict» код также запустится, но некоторые возможности будут работать в «режиме совместимости» со старыми версиями языка JavaScript. Нам же предпочтительнее современное поведение.
Некоторые конструкции языка (например, классы, которые нам ещё предстоит изучить) включают строгий режим по умолчанию.
Переменные
Можно объявить при помощи:
- let
- const (константа, т.е. изменению не подлежит)
- var (устаревший способ, подробности позже)
Имя переменной может включать:
- Буквы и цифры, однако цифра не может быть первым символом.
- Символы $ и _ используются наряду с буквами.
- Иероглифы и символы нелатинского алфавита также допустимы, но обычно не используются.
Переменные типизируются динамически. В них могут храниться любые значения:
let x = 5; x = "Вася";
Всего существует 8 типов данных:
- number для целых и вещественных чисел,
- bigint для работы с целыми числами произвольной длины,
- string для строк,
- boolean для логических значений истинности или ложности: true/false ,
- null – тип с единственным значением null , т.е. «пустое значение» или «значение не существует»,
- undefined – тип с единственным значением undefined , т.е. «значение не задано»,
- object и symbol – сложные структуры данных и уникальные идентификаторы; их мы ещё не изучили.
Оператор typeof возвращает тип значения переменной, с двумя исключениями:
typeof null == "object" // ошибка в языке typeof function()<> == "function" // именно для функций
Взаимодействие с посетителем
В качестве рабочей среды мы используем браузер, так что простейшими функциями взаимодействия с посетителем являются:
prompt(question, [default]) Задаёт вопрос question и возвращает то, что ввёл посетитель, либо null , если посетитель нажал на кнопку «Отмена». confirm(question) Задаёт вопрос question и предлагает выбрать «ОК» или «Отмена». Выбор возвращается в формате true/false . alert(message) Выводит сообщение message .
Все эти функции показывают модальные окна, они останавливают выполнение кода и не позволяют посетителю взаимодействовать со страницей, пока не будет дан ответ на вопрос.
let userName = prompt("Введите имя", "Алиса"); let isTeaWanted = confirm("Вы хотите чаю?"); alert( "Посетитель: " + userName ); // Алиса alert( "Чай: " + isTeaWanted ); // true
Операторы
JavaScript поддерживает следующие операторы:
Простые * + — / , а также деление по модулю % и возведение в степень ** .
Бинарный плюс + объединяет строки. А если одним из операндов является строка, то второй тоже будет конвертирован в строку:
alert( '1' + 2 ); // '12', строка alert( 1 + '2' ); // '12', строка
Операторы присваивания
Простые a = b и составные a *= 2 .
Битовые операторы работают с 32-битными целыми числами на самом низком, побитовом уровне. Подробнее об их использовании можно прочитать на ресурсе MDN и в разделе Побитовые операторы.
Единственный оператор с тремя параметрами: cond ? resultA : resultB . Если условие cond истинно, возвращается resultA , иначе – resultB .
Логические И && , ИЛИ || используют так называемое «ленивое вычисление» и возвращают значение, на котором оно остановилось (не обязательно true или false ). Логическое НЕ ! конвертирует операнд в логический тип и возвращает инвертированное значение.
Оператор нулевого слияния
Оператор ?? предоставляет способ выбора определённого значения из списка переменных. Результатом a ?? b будет a , если только оно не равно null/undefined , тогда b .
Проверка на равенство == значений разных типов конвертирует их в число (за исключением null и undefined , которые могут равняться только друг другу), так что примеры ниже равны:
alert( 0 == false ); // true alert( 0 == '' ); // true
Другие операторы сравнения тоже конвертируют значения разных типов в числовой тип.
Оператор строгого равенства === не выполняет конвертирования: разные типы для него всегда означают разные значения.
Значения null и undefined особенные: они равны == только друг другу, но не равны ничему ещё.
Операторы сравнения больше/меньше сравнивают строки посимвольно, остальные типы конвертируются в число.
Существуют и другие операторы, такие как запятая.
Циклы
- Мы изучили три вида циклов:
// 1 while (condition) < . >// 2 do < . >while (condition); // 3 for(let i = 0; i
Позже мы изучим ещё виды циклов для работы с объектами.
Конструкция «switch»
Конструкция «switch» может заменить несколько проверок if . При сравнении она использует оператор строгого равенства === .
let age = prompt('Сколько вам лет?', 18); switch (age) < case 18: alert("Так не сработает"); // результатом prompt является строка, а не число case "18": alert("А так сработает!"); break; default: alert("Любое значение, неравное значению выше"); >
Функции
Мы рассмотрели три способа создания функции в JavaScript:
-
Function Declaration: функция в основном потоке кода
function sum(a, b)
let sum = function(a, b) < let result = a + b; return result; >;
// выражение в правой части let sum = (a, b) => a + b; // многострочный код в фигурных скобках < . >, здесь нужен return: let sum = (a, b) => < // . return a + b; >// без аргументов let sayHi = () => alert("Привет"); // с одним аргументом let double = n => n * 2;
- У функций могут быть локальные переменные: т.е. объявленные в теле функции. Такие переменные видимы только внутри функции.
- У параметров могут быть значения по умолчанию: function sum(a = 1, b = 2) .
- Функции всегда что-нибудь возвращают. Если нет оператора return , результатом будет undefined .
Далее мы изучим больше
Это был краткий список возможностей JavaScript. На данный момент мы изучили только основы. Далее в учебнике вы найдёте больше особенностей и продвинутых возможностей JavaScript.
Переменные
JavaScript-приложению обычно нужно работать с информацией. Например:
- Интернет-магазин – информация может включать продаваемые товары и корзину покупок.
- Чат – информация может включать пользователей, сообщения и многое другое.
Переменные используются для хранения этой информации.
Переменная
Переменная – это «именованное хранилище» для данных. Мы можем использовать переменные для хранения товаров, посетителей и других данных.
Для создания переменной в JavaScript используйте ключевое слово let .
Приведённая ниже инструкция создаёт (другими словами, объявляет) переменную с именем «message»:
let message;
Теперь можно поместить в неё данные (другими словами, определить переменную), используя оператор присваивания = :
let message; message = 'Hello'; // сохранить строку 'Hello' в переменной с именем message
Строка сохраняется в области памяти, связанной с переменной. Мы можем получить к ней доступ, используя имя переменной:
let message; message = 'Hello!'; alert(message); // показывает содержимое переменной
Для краткости можно совместить объявление переменной и запись данных в одну строку:
let message = 'Hello!'; // определяем переменную и присваиваем ей значение alert(message); // Hello!
Мы также можем объявить несколько переменных в одной строке:
let user = 'John', age = 25, message = 'Hello';
Такой способ может показаться короче, но мы не рекомендуем его. Для лучшей читаемости объявляйте каждую переменную на новой строке.
Многострочный вариант немного длиннее, но легче для чтения:
let user = 'John'; let age = 25; let message = 'Hello';
Некоторые люди также определяют несколько переменных в таком вот многострочном стиле:
let user = 'John', age = 25, message = 'Hello';
…Или даже с запятой в начале строки:
let user = 'John' , age = 25 , message = 'Hello';
В принципе, все эти варианты работают одинаково. Так что это вопрос личного вкуса и эстетики.
var вместо let
В старых скриптах вы также можете найти другое ключевое слово: var вместо let :
var message = 'Hello';
Ключевое слово var – почти то же самое, что и let . Оно объявляет переменную, но немного по-другому, «устаревшим» способом.
Есть тонкие различия между let и var , но они пока не имеют для нас значения. Мы подробно рассмотрим их в главе Устаревшее ключевое слово «var».
Аналогия из жизни
Мы легко поймём концепцию «переменной», если представим её в виде «коробки» для данных с уникальным названием на ней.
Например, переменную message можно представить как коробку с названием «message» и значением «Hello!» внутри:
Мы можем положить любое значение в коробку.
Мы также можем изменить его столько раз, сколько захотим:
let message; message = 'Hello!'; message = 'World!'; // значение изменено alert(message);
При изменении значения старые данные удаляются из переменной:
Мы также можем объявить две переменные и скопировать данные из одной в другую.
let hello = 'Hello world!'; let message; // копируем значение 'Hello world' из переменной hello в переменную message message = hello; // теперь две переменные содержат одинаковые данные alert(hello); // Hello world! alert(message); // Hello world!
Повторное объявление вызывает ошибку
Переменная может быть объявлена только один раз.
Повторное объявление той же переменной является ошибкой:
let message = "Это"; // повторение ключевого слова 'let' приводит к ошибке let message = "Другое"; // SyntaxError: 'message' has already been declared
Поэтому следует объявлять переменную только один раз и затем использовать её уже без let .
Функциональные языки программирования
Примечательно, что существуют функциональные языки программирования, такие как Scala или Erlang, которые запрещают изменять значение переменной.
В таких языках однажды сохранённое «в коробку» значение остаётся там навсегда. Если нам нужно сохранить что-то другое, язык заставляет нас создать новую коробку (объявить новую переменную). Мы не можем использовать старую переменную.
Хотя на первый взгляд это может показаться немного странным, эти языки вполне подходят для серьёзной разработки. Более того, есть такая область, как параллельные вычисления, где это ограничение даёт определённые преимущества. Изучение такого языка (даже если вы не планируете использовать его в ближайшее время) рекомендуется для расширения кругозора.
Имена переменных
В JavaScript есть два ограничения, касающиеся имён переменных:
- Имя переменной должно содержать только буквы, цифры или символы $ и _ .
- Первый символ не должен быть цифрой.
Примеры допустимых имён:
let userName; let test123;
Если имя содержит несколько слов, обычно используется верблюжья нотация, то есть, слова следуют одно за другим, где каждое следующее слово начинается с заглавной буквы: myVeryLongName .
Самое интересное – знак доллара ‘$’ и подчёркивание ‘_’ также можно использовать в названиях. Это обычные символы, как и буквы, без какого-либо особого значения.
Эти имена являются допустимыми:
let $ = 1; // объявили переменную с именем "$" let _ = 2; // а теперь переменную с именем "_" alert($ + _); // 3
Примеры неправильных имён переменных:
let 1a; // не может начинаться с цифры let my-name; // дефис '-' не разрешён в имени
Регистр имеет значение
Переменные с именами apple и APPLE – это две разные переменные.
Нелатинские буквы разрешены, но не рекомендуются
Можно использовать любой язык, включая кириллицу или даже иероглифы, например:
let имя = '. '; let 我 = '. ';
Технически здесь нет ошибки, такие имена разрешены, но есть международная традиция использовать английский язык в именах переменных. Даже если мы пишем небольшой скрипт, у него может быть долгая жизнь впереди. Людям из других стран, возможно, придётся прочесть его не один раз.
Зарезервированные имена
Существует список зарезервированных слов, которые нельзя использовать в качестве имён переменных, потому что они используются самим языком.
Например: let , class , return и function зарезервированы.
Приведённый ниже код даёт синтаксическую ошибку:
let let = 5; // нельзя назвать переменную "let", ошибка! let return = 5; // также нельзя назвать переменную "return", ошибка!
Создание переменной без использования use strict
Обычно нам нужно определить переменную перед её использованием. Но в старые времена было технически возможно создать переменную простым присвоением значения без использования let . Это все ещё работает, если мы не включаем use strict в наших файлах, чтобы обеспечить совместимость со старыми скриптами.
// заметка: "use strict" в этом примере не используется num = 5; // если переменная "num" раньше не существовала, она создаётся alert(num); // 5
Это плохая практика, которая приводит к ошибке в строгом режиме:
"use strict"; num = 5; // ошибка: num is not defined
Константы
Чтобы объявить константную, то есть, неизменяемую переменную, используйте const вместо let :
const myBirthday = '18.04.1982';
Переменные, объявленные с помощью const , называются «константами». Их нельзя изменить. Попытка сделать это приведёт к ошибке:
const myBirthday = '18.04.1982'; myBirthday = '01.01.2001'; // ошибка, константу нельзя перезаписать!
Если программист уверен, что переменная никогда не будет меняться, он может гарантировать это и наглядно донести до каждого, объявив её через const .
Константы в верхнем регистре
Широко распространена практика использования констант в качестве псевдонимов для трудно запоминаемых значений, которые известны до начала исполнения скрипта.
Названия таких констант пишутся с использованием заглавных букв и подчёркивания.
Например, сделаем константы для различных цветов в «шестнадцатеричном формате»:
const COLOR_RED = "#F00"; const COLOR_GREEN = "#0F0"; const COLOR_BLUE = "#00F"; const COLOR_ORANGE = "#FF7F00"; // . когда нам нужно выбрать цвет let color = COLOR_ORANGE; alert(color); // #FF7F00
- COLOR_ORANGE гораздо легче запомнить, чем «#FF7F00» .
- Гораздо легче допустить ошибку при вводе «#FF7F00» , чем при вводе COLOR_ORANGE .
- При чтении кода COLOR_ORANGE намного понятнее, чем #FF7F00 .
Когда мы должны использовать для констант заглавные буквы, а когда называть их нормально? Давайте разберёмся и с этим.
Название «константа» просто означает, что значение переменной никогда не меняется. Но есть константы, которые известны до выполнения (например, шестнадцатеричное значение для красного цвета), а есть константы, которые вычисляются во время выполнения сценария, но не изменяются после их первоначального назначения.
const pageLoadTime = /* время, потраченное на загрузку веб-страницы */;
Значение pageLoadTime неизвестно до загрузки страницы, поэтому её имя записано обычными, а не прописными буквами. Но это всё ещё константа, потому что она не изменяется после назначения.
Другими словами, константы с именами, записанными заглавными буквами, используются только как псевдонимы для «жёстко закодированных» значений.
Придумывайте правильные имена
В разговоре о переменных необходимо упомянуть, что есть ещё одна чрезвычайно важная вещь.
Название переменной должно иметь ясный и понятный смысл, говорить о том, какие данные в ней хранятся.
Именование переменных – это один из самых важных и сложных навыков в программировании. Быстрый взгляд на имена переменных может показать, какой код был написан новичком, а какой – опытным разработчиком.
В реальном проекте большая часть времени тратится на изменение и расширение существующей кодовой базы, а не на написание чего-то совершенно нового с нуля. Когда мы возвращаемся к коду после какого-то промежутка времени, гораздо легче найти информацию, которая хорошо размечена. Или, другими словами, когда переменные имеют хорошие имена.
Пожалуйста, потратьте время на обдумывание правильного имени переменной перед её объявлением. Делайте так, и будете вознаграждены.
Несколько хороших правил:
- Используйте легко читаемые имена, такие как userName или shoppingCart .
- Избегайте использования аббревиатур или коротких имён, таких как a , b , c , за исключением тех случаев, когда вы точно знаете, что так нужно.
- Делайте имена максимально описательными и лаконичными. Примеры плохих имён: data и value . Такие имена ничего не говорят. Их можно использовать только в том случае, если из контекста кода очевидно, какие данные хранит переменная.
- Договоритесь с вашей командой об используемых терминах. Если посетитель сайта называется «user», тогда мы должны называть связанные с ним переменные currentUser или newUser , а не, к примеру, currentVisitor или newManInTown .
Звучит просто? Действительно, это так, но на практике для создания описательных и кратких имён переменных зачастую требуется подумать. Действуйте.
Повторно использовать или создавать новую переменную?
И последняя заметка. Есть ленивые программисты, которые вместо объявления новых переменных повторно используют существующие.
В результате их переменные похожи на коробки, в которые люди бросают разные предметы, не меняя на них этикетки. Что сейчас находится внутри коробки? Кто знает? Нам необходимо подойти поближе и проверить.
Такие программисты немного экономят на объявлении переменных, но теряют в десять раз больше при отладке.
Дополнительная переменная – это добро, а не зло.
Современные JavaScript-минификаторы и браузеры оптимизируют код достаточно хорошо, поэтому он не создаёт проблем с производительностью. Использование разных переменных для разных значений может даже помочь движку оптимизировать ваш код.
Итого
Мы можем объявить переменные для хранения данных с помощью ключевых слов var , let или const .
- let – это современный способ объявления.
- var – это устаревший способ объявления. Обычно мы вообще не используем его, но мы рассмотрим тонкие отличия от let в главе Устаревшее ключевое слово «var» на случай, если это всё-таки вам понадобится.
- const – похоже на let , но значение переменной не может изменяться.
Переменные должны быть названы таким образом, чтобы мы могли легко понять, что у них внутри.
Задачи
Работа с переменными
важность: 2
- Объявите две переменные: admin и name .
- Запишите строку «Джон» в переменную name .
- Скопируйте значение из переменной name в admin .
- Выведите на экран значение admin , используя функцию alert (должна показать «Джон»).
В коде ниже каждая строка решения соответствует одному элементу в списке задач.
let admin, name; // можно объявить две переменные через запятую name = "Джон"; admin = name; alert( admin ); // "Джон"
В этом задании вам нужно вписать в указанное место код, который будет присваивать переменной «х» удвоенное значение оста
В этом задании вам нужно вписать в указанное место код, который будет присваивать переменной «х» удвоенное значение остатка от деления произведения переменных «a» и «b» на их сумму.
Sample Input:
6 4
Sample Output:
8
Чет до меня не может дойти как правильно посчитать. javascript
Лучший ответ
Что конкретно не понятно?
a % b — остаток от деления a на b, нужно остаток от деления произведения на сумму, т. е. (a * b) % (a + b) и удвоить это.
Остальные ответы
На бейсике кажися так:
X=2*mod((a*b)/(a+b))
Посчитать можно, а ввод/вывод оформляйте согласно задания.
елена пинюгжанинаПрофи (952) 4 года назад
Николай Веселуха Высший разум (344990) я старался)
Константин БоловиновУченик (106) 5 месяцев назад
16 выходит же

Константин Боловинов Ученик (106) Константин Боловинов,
Присвоить переменной «х» значение суммы переменных «a» и «b» если «a > b» или их произведение в остальных случаях.
В этом задании вам нужно вписать в указанное место код, который будет присваивать переменной «х» значение суммы переменных «a» и «b» в случае если *a > b или их произведение в остальных случаях.
Вот собственно сам код:
1 2 3 4 5 6
function testIf(a, b) { var x; //Сюда впишите код } return x; }
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Если произведение отрицательных чисел больше чем произведение нечетных , то присвоить переменной Т значение 1 иначе 0
и 2 плес: Дан одномерный массив А, состоящий из N целых чисел. Если произведение отрицательных.
Булевской переменной Flag присвоить значение True если значения переменных X равны
1) Булевской переменной Flag присвоить значение True если значения переменных X равны, и значение.
Если значения двух переменных равны по модулю, то присвоить каждой переменной произведение этих значений по модулю
Даны 2 переменные целого типа: A и B. Если их значения равны по модулю, то присвоить каждой.
565 / 464 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
1 2 3 4
function testIf(a, b) { var x = a > b ? (a + b) : (a * b); return x; }
Регистрация: 13.11.2016
Сообщений: 13
В этом задании вам нужно вписать в указанное место код, который будет присваивать переменной «х» значение суммы переменных «a» и «b» — в случае если *a < b, разность "a" и "b" - в случае если *a >b, и их произведение *в остальных случаях.
565 / 464 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
maxroyk, провалы в памяти? пичаль.
https://www.cyberforum.ru/java. 41923.html
Регистрация: 13.11.2016
Сообщений: 13
Нет не провалы в памяти просто не знаю как решить. Я ещё тернарные операторы не прошёл.
565 / 464 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
Сообщение от maxroyk 
Я ещё тернарные операторы не прошёл.
раз уж вы разобрались что это тернарный,то изучить его 10-15 минут требуется
1 2 3 4 5 6 7 8
function testIf(a, b) { var x; if(a > b) x = a + b; else x = a * b; return x; }
если вам что-то не ясно-задавайте вопросы в этой же теме,а не клонируйте новую. Это нарушение правил форума.
Регистрация: 13.11.2016
Сообщений: 13
![]()
Сообщение от klopp
1 2 3 4 5 6 7 8
function testIf(a, b) { var x; if(a > b) x = a + b; else x = a * b; return x; }
В данном случае по условию задачи, должно быть и 3 условие.
565 / 464 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
Сообщение от maxroyk 
должно быть и 3 условие
где про это сказано?
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Переменной M присвоить минимальное значение переменных
Переменной M присвоить минимальное значение переменных целого типа I, J, K. Вывести на экран все.

Переменной S присвоить значение -1,если площадь треугольника ABC меньше или равна площади треугольника KLF
Даны два треугольника ABC (стороны a,b,c) и RLF (стороны r,l,f). Переменной S присвоить значение.

Если значения переменных не равны, то присвоить каждой переменной сумму значений
1. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой.

Если значения переменных не равны, то присвоить каждой переменной большее из значений
Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной.

Присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном случае
Имеется символьная переменная d, присвоить логической переменной T значение true, если значение.

Если значения переменных не равны, то присвоить каждой переменной сумму этих значений
Даны две переменные целого типа: А и В. Если их значения не равны, то присвоить каждой переменной.