Доброго времени суток всем, кто читает данную статью. Сегодня я во всех подробностях расскажу про сложение в JavaScript. А если точнее, то мы разберем с вами, как производится сложение простых чисел, строковых переменных и массивов, в чем разница между унарными и бинарными операторами, какие существуют приоритеты операций, а также что под собой подразумевают инкремент и декремент.
Давайте приступим!
Разберемся с терминами
В самом начале данной статьи я хочу, чтоб вы разобрали основные термины в языках программирования, связанные с вычислениями. Возможно, большинство из вас уже давненько оперирует ими. И это отлично.
Итак, стоит знать, что обозначают такие термины, как операнд, унарный и бинарный оператор.
Операндом называется тот элемент, к которому применяются некоторые операторы. Так, например, в записи «15 — 38» оператором выступает знак «минус», а операндами являются числа 15 и 38.
А что же такое унарный или бинарный оператор? Тут также все просто. Унарный (от слова «уно», что означает «один») применяется только к одному элементу. К примеру, -7. В этом случае «минус» — это унарный оператор. А бинарный (уже понятно, что означает «два») работает с двумя объектами. Здесь можно в качестве примера привести «12*701».
«У меня есть приоритеты! Поэтому плевал я на ваш порядок!»
Уверен, что всем известно о приоритетах выполнения арифметических операций. Однако с изучением языков программирования и конкретно JS в этот перечень добавляются и другие их виды. Всего существует 20 уровней, начиная с 0 и заканчивая 19.
В таблице, прикрепленной ниже, я перечислил несколько операторов в порядке их важности.
Размер приоритета | Тип оператора | Представление в коде |
15 | Логическое отрицание | !X |
Префиксный инкремент | ++X | |
Префиксный декремент | --X | |
14 | Деление | X/Y |
Умножение | X*Y | |
13 | Вычитание | X-Y |
Сложение | X+Y | |
10 | Равенство | X==Y |
3 | Присваивание | X=Y |
Если для решения какой-то задачи вам необходимо узнать и о других операторах, то перейдите на полную таблицу, представленную по [urlspan]ссылке[/urlspan].
Инкремент и декремент
Начнем разбор по приоритетам. Наиболее частыми операциями в JavaScript, как и в других языках программирования, являются названные в заголовке текущей главы. Их используют для уменьшения или увеличения значения конкретного элемента на единицу.
Существует два вида как инкремента, так и декремента: постфиксный и префиксный. При чем первый тип имеет приоритет 16, а второй – 15.
Разница их состоит в том, в какой момент идет изменение числа. Так, префиксные типы увеличивают или уменьшают значение сразу. Поэтому если в строке будет указано:
var k=1; alert (++k);
то при запуске программы отобразится 2. В то время как при использовании постфиксных операторов после запуска кода
var k=1; alert (k++);
выведется 1.
Рассмотрим пример, который достаточно часто дают в тестах или на собеседованиях. Вам нужно сказать, что отобразится на экране при первом и втором выводах.
1 2 3 4 5 6 7 | 1 <script> 2 'use strict'; 3 var i = 3; 4 i--; // короткая и удобная запись для i = i - 1. 5 alert(++i + i++); // i=? 6 alert(i);// i=? 7 </script> |
А теперь давайте разберем. В четвертой строке указано уменьшение i на единицу. Изменения вступят в силу при выполнении следующей строки программы. Поэтому во время вызова alert переменная i будет равна 2.
Префиксный инкремент сразу увеличивает значение на 1, а постфиксный вступает в силу на следующей строке. В итоге получим запись «3+3», а значит и в диалоговом окне выведется 6.
На следующей строке увеличение сработало и поэтому отобразится 4.
Что-то новенькое при сложении элементов
В JS складывать можно не только числа, а еще и другие типы переменных: строки, массивы и т.д. В качестве примера ознакомьтесь с частью программы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <script> function myFunction() { var a=3, b=7; var str1='Hi, ', str2='friend!'; var c = a+b; var str = str1+str2; var mix = str1+a; alert(c+"\n"+str+"\n"+mix); //выведет: 10 // Hi, friend! // Hi, 3 } </script> |
Во втором и третьем случае сложения происходит конкатенация строк, т.е. соединение их в одну. Вот тут и возникают проблемы у начинающих разработчиков.
Допустим вы вытащили определенное значение, которое является строковым var str1='10'; и при этом вам его надо суммировать с числом var a=3;. Если будет произведена операция var mix = str1+a;, то при выводе alert (mix); на экране появится «103». Чтобы этого не было, текстовую переменную нужно конвертировать следующим образом:
var mix = parseInt (str1, 10)+a;. //ответ: 13
Перейдем к массивам. В скриптовом языке существует функция, которая объединяет несколько массивов в один. Это concat.
1 2 3 4 5 | var numbers1 = [1, 1, 1]; var numbers2 = [2, 2, 2]; // получается массив [1, 1, 1, 2, 2, 2]; var nums = numbers1.concat(numbers2); alert(nums); |
Если же необходимо просуммировать все элементы массива, то здесь вас спасут только циклы.
1 2 3 4 | var res=0; for (var i=0; i<numbers1.length; i++) res+=numbers1[i]+numbers2[i]; alert(res); //ответ: 9 |
На этой ноте я заканчиваю свою статью. Буду раз видеть вас в подписчиках моего блога. Не забывайте рассказывать об этом сайте своим друзьям и делиться с ними интересными публикациями. До новых встреч! Пока-пока!
С уважением, Роман Чуешов