Доброго времени суток всем, кто читает данную статью. Сегодня я во всех подробностях расскажу про сложение в JavaScript. А если точнее, то мы разберем с вами, как производится сложение простых чисел, строковых переменных и массивов, в чем разница между унарными и бинарными операторами, какие существуют приоритеты операций, а также что под собой подразумевают инкремент и декремент.
Давайте приступим!
Разберемся с терминамиВ самом начале данной статьи я хочу, чтоб вы разобрали основные термины в языках программирования, связанные с вычислениями. Возможно, большинство из вас уже давненько оперирует ими. И это отлично.
Итак, стоит знать, что обозначают такие термины, как операнд, унарный и бинарный оператор.
Операндом называется тот элемент, к которому применяются некоторые операторы. Так, например, в записи «15 — 38» оператором выступает знак «минус», а операндами являются числа 15 и 38.
А что же такое унарный или бинарный оператор? Тут также все просто. Унарный (от слова «уно», что означает «один») применяется только к одному элементу. К примеру, -7. В этом случае «минус» — это унарный оператор. А бинарный (уже понятно, что означает «два») работает с двумя объектами. Здесь можно в качестве примера привести «12*701».
«У меня есть приоритеты! Поэтому плевал я на ваш порядок!»Уверен, что всем известно о приоритетах выполнения арифметических операций. Однако с изучением языков программирования и конкретно в этот перечень добавляются и другие их виды. Всего существует 20 уровней, начиная с 0 и заканчивая 19.
В таблице, прикрепленной ниже, я перечислил несколько операторов в порядке их важности.
Если для решения какой-то задачи вам необходимо узнать и о других операторах, то перейдите на полную таблицу, представленную по ссылке.
Инкремент и декрементНачнем разбор по приоритетам. Наиболее частыми операциями в JavaScript, как и в других языках программирования, являются названные в заголовке текущей главы. Их используют для уменьшения или увеличения значения конкретного элемента на единицу.
Существует два вида как инкремента, так и декремента: постфиксный и префиксный. При чем первый тип имеет приоритет 16, а второй – 15.
Разница их состоит в том, в какой момент идет изменение числа. Так, префиксные типы увеличивают или уменьшают значение сразу. Поэтому если в строке будет указано:
то при запуске программы отобразится 2. В то время как при использовании постфиксных операторов после запуска кода
выведется 1.
Рассмотрим пример, который достаточно часто дают в тестах или на собеседованиях. Вам нужно сказать, что отобразится на экране при первом и втором выводах.
1 2 "use strict"; 3 var i = 3; 4 i--; // короткая и удобная запись для i = i - 1. 5 alert(++i + i++); // i=? 6 alert(i);// i=? 7
А теперь давайте разберем. В четвертой строке указано уменьшение 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 |
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 }
Во втором и третьем случае сложения происходит конкатенация строк, т.е. соединение их в одну. Вот тут и возникают проблемы у начинающих разработчиков.
Допустим вы вытащили определенное значение, которое является строковым var str1="10"; и при этом вам его надо суммировать с числом var a=3; . Если будет произведена операция var mix = str1+ a; , то при выводе alert (mix); на экране появится «103». Чтобы этого не было, текстовую переменную нужно конвертировать следующим образом:
var mix = parseInt (str1, 10)+a;. //ответ: 13
Перейдем к массивам. В скриптовом языке существует функция, которая объединяет несколько массивов в один. Это concat.
var numbers1 = ; var numbers2 = ; // получается массив ; var nums = numbers1.concat(numbers2); alert(nums);
Если же необходимо просуммировать все элементы массива, то здесь вас спасут только циклы.
1 2 3 4 | var res=0;
for (var i=0; i count_players;
document.write(count_ball + " > " + count_players + " = " + compare + " "); //false compare = count_ball < count_players; document.write(count_ball + " < " + count_players + " = " + compare + " "); //true Данные операции чаще всего используются в условных операторах if, else. Для лучшего понимания, покажу Вам таблицу истинности. Ее Вы должны знать наизусть. Для этого достаточно ее понять. Вместо true может быть 1, а вместо false 0. && - Это оператор AND, то есть И. Его можно понять как оператор умножения.
|| - Это оператор OR, то есть ИЛИ. Его можно понять как оператор сложение.
Символ "|" на клавиатуре печатается с помощью комбинации клавиш Shift + Back slesh(Обратный слеш \). ^ - Это оператор XOR, то есть Исключающее ИЛИ. Он используется редко. Но его нужно знать по любому, вдруг понадобится.
Вот и все о чем хотел Вам рассказать в этой статье. Теперь Вы знаете, какие типы переменных существуют в программировании и как использовать их в различных арифметических и логических операциях. В этой статье речь пойдет о том, что такое строки в JavaScript и методах работы с ними. Строки — это просто группы символов, такие как « JavaScript », « Hello world! », « http://www.quirksmode.org » или даже « 14 ». Для программирования на JavaScript Вам необходимо знать, что такое строки и как с ними работать, т. к. использовать их придется очень часто. Многие вещи, такие как URL -страницы, значения CSS -параметров и элементов ввода форм — все является строками. Сначала постараюсь объяснить работы со строками , затем — разницу между в JavaScript. Даже если у Вас есть опыт программирования на другом языке, внимательно прочтите эту часть. В конце я расскажу о самых важных строк в JavaScript . Основы работы со строкамиДавайте рассмотрим основы работы со строками в JavaScript. Использование кавычекКогда Вы объявляете строки в JavaScript или работаете с ними, всегда заключайте их в одинарные или двойные кавычки. Этим Вы объясняете браузеру, что он имеет дело со строкой. Не смешивайте использование кавычек в коде, если Вы начали строку с одинарной кавычки, а закончили двойной, JavaScript не поймет, что Вы имели в виду. Как правило, я использую одинарные кавычки для работы со строками, так как двойные кавычки я решил использовать для HTML , а одинарные — для JavaScript. Конечно, Вы можете делать все по-другому, но я советую вам придумать подобное правило для себя. Давайте представим две строки, которые мы будем использовать на протяжении всей статьи: Var a = "Hello world!"; var b = "I am a student."; Сейчас мы объявили две переменные, « a » и « b », и присвоили им строковые значения. После этого мы можем с ними работать, но сначала решим одну проблему: допустим, я написал: Var b = "I"m a student."; Строка содержит в себе лишнюю одинарную кавычку, и JavaScript думает, что строка закончена и выводит сообщение об ошибке, не понимая, что следует дальше. Поэтому Вам нужно экранировать кавычку , сообщая браузеру, что её нужно рассматривать как символ, а не как окончание строки. Это осуществляется с помощью «обратного слеша» перед кавычкой: Var b = "I\"m a student."; Заметьте, что Вы можете вставлять в строку двойные кавычки без их экранирования. Так как Вы используете одинарные кавычки, как начало и конец строки, Var b = "I\"m a "student"."; воспринимается без проблем. Двойные кавычки автоматически рассматриваются, как части строки, а не команды. Встроенные функцииПосле определения строк можно начать их использование. Например, Вы можете соединить одну строку с другой , или взять из строки « b » подстроку, состоящую из второго—четвертого символов и вставить их в середину строки « a », или определить какой символ стоит двенадцатым в « a », сколько символов в « b », есть ли в них буква «q» и т. д. Для этого Вы можете использовать встроенные функции, которые JavaScript предопределяет для каждой строки. Одна из них — «length» — возвращает длину строки. То есть если Вы хотите вычислить длину «Hello world!», напишите: Var c = "Hello world!".length; Ранее мы присвоили эту строку переменной « а ». Таким образом, Вы сделали переменную « a » строкой, поэтому к ней тоже применима функция «length», и следующая операция даст такой же результат: Var c = a.length; Запомните, что Вы можете использовать «length» для любой строки — это встроенная функция. Вы можете вычислить длину любой строки , например: « location.href » или « document.title » или объявленной Вами. Ниже я представлю список распространенных встроенных методов и свойств. Строки и числаВ некоторых языках программирования от Вас требуется указывать, является ли переменная числом или строкой, перед тем, как делать с ней что-либо ещё. JavaScript проще относится к разнице между строками и числами. Фактически Вы даже можете складывать числа со строками: Var c = a + 12; В некоторых языках программирования обработка такой строки приведет к ошибке. Всё же « a » — это строка, а «12» — число. Однако JavaScript пытается решить проблему, предполагая, что «12» — тоже строка. Таким образом « с » принимает значение « Hello world!12 ». Значит, если Вы используете «+» со строкой и числом, JavaScript пытается сделать из числа строку. Если же Вы применяете математические операции к строке, JavaScript пробует превратить её в число. При отсутствии возможности перевода строки в число (например, из-за наличия в ней букв), JavaScript возвращает NaN — «Not a Number — не является числом». Наконец, в JavaScript нет разницы между целыми величинами и числами с плавающей точкой. Число → строкаДля преобразования числа в строку введите: Var c = (16 * 24) / 49 + 12; d = c.toString(); После этого Вы можете применять к « d » все строковые методы, а « c » все ещё содержит число. Строка → числоЕсли Вы хотите преобразовать строку в число, сначала убедитесь, что она состоит только из символов 0—9 . Для этого я просто умножаю строку на 1 . Var c = "1234"; d = c * 1; Так как умножение производится только с числами, JavaScript превращает строку в число, если это возможно. В противном случае, результат — NaN . Заметим, если написать: Var c = "1234"; d = c + 0; Результатом будет « 12340 », потому что JavaScript использует «+» для соединения строк, а не их сложения. Строковые свойства и методыТак что же мы можем делать со строками? Объединение — это особый случай, но все остальные команды (методы) могут использоваться с любой строкой с помощью конструкции: Имя_строки.метод(); Список встроенных методов JavaScript для работы со строками Конкатенация — объединение строкВо-первых, Вы можете объединить строки, сложив их вместе, вот так: Document.write(a + b); в результате получится: « Hello world!I am a student. ». Но, конечно же, Вы хотите, чтобы между предложениями был пробел. Для этого запишем код следующим образом: Document.write(a + " " + b); Так мы соединим три строки: « а », « " " » (один пробел) и « b », в итоге получив: « Hello world! I am a student. » Вы можете использовать даже числа или вычисления, например: Document.write (a + 3 * 3 + b); Сейчас мы соединяем строку « а », затем результат выражения « 3 * 3 », рассматриваемый как строка, и « b », получая: « Hello world!9 I am a student. » При использовании сложения нужно быть внимательным. Команда Document.write (a + 3 + 3 + b); соединяет 4 строки: « а », « 3 », « 3 » и « b », потому что «+» в данном случае означает «соединить строки», а не «сложить» и в результате: « Hello world!33 I am a student. ». Если Вы хотите сложить 3 и 3 перед созданием строки, используйте скобки. Document.write (a + (3 + 3) + b); Данное выражение соединяет строку « а », результат выражения « 3 + 3 » и « b », в итоге: « Hello world!6 I am a student. ». indexOfОдин из самых широко используемых встроенных методов это «indexOf». Каждый символ имеет свой индекс, содержащий номер его позиции в строке. Заметим, что индекс первого символа — 0 , второго — 1 и т. д. Таким образом, индекс символа «w» в сроке « а » — 6 . Используя «indexOf» мы можем вывести индекс символа. Напишите « .indexOf(" ") » после названия строки и вставьте искомый символ между кавычками. Например: Var a = "Hello world!"; document.write(a.indexOf("w")); возвратит 6 . Если символ встречается несколько раз, этот метод возвращает первое вхождение. То есть Document.write(a.indexOf("o")); возвратит 4 , потому что это индекс первой «o» в строке. Вы также можете искать комбинацию символов. (Конечно, это тоже строка, но, чтобы избежать путаницы, я не буду называть её так). «indexOf» возвращает позицию первого символа комбинации. Например: Document.write(a.indexOf("o w")); тоже возвратит 4 , потому что это индекс «o». Более того, возможен поиск символа после определенного индекса. Если Вы введете Document.write(a.indexOf("o", 5)); то получите индекс первой «o», следующей за символом с индексом 5 (это пробел), то есть результат будет — 7 . Если символ или комбинация не встречается в строке, «indexOf» возвратит « -1 ». Это, по сути, самое популярное применение «indexOf»: проверка существования определенной комбинации символов. Оно является ядром скрипта, определяющего браузер. Для определения IE Вы берете строку: Navigator.userAgent; и проверяете, содержит ли она « MSIE »: If(navigator.userAgent.indexOf("MSIE") != -1) { //Какие-либо дествия с Internet Explorer } Если индекс « MSIE » — не « -1 » (если « MSIE » встречается где-либо в строке), то текущий браузер — IE . lastIndexOfТакже существует метод «lastIndexOf», который возвращает последнее вхождение символа или комбинации. Он действует противоположно «indexOf». Команда Var b = "I am a student."; document.write(b.lastIndexOf("t")); возвратит 13 , потому что это индекс последней «t» в строке. charAtМетод «charAt» возвращает символ, стоящий на указанной позиции. Например, когда Вы вводите Var b = "I am a student."; document.write(b.charAt(5)); в результате получается « a », так как это символ на шестой позиции (помните, что индекс первого символа начинается с 0). lengthМетод «length» возвращает длину строки. Var b = "I am a student."; document.write(b.length); возвратит «15». Длина строки на 1 больше, чем индекс последнего символа. split« split » — это специальный метод, позволяющий разделить строку по определенным символам. Используется, когда результат необходимо заносить в массив, а не в простую переменную. Давайте разделим « b » по пробелам: Var b = "I am a student." var temp = new Array(); temp = b.split(" "); Теперь строка разбита на 4 подстроки, которые помещаются в массив « temp ». Сами пробелы исчезли. Temp = "I"; temp = "am"; temp = "a"; temp = "student"; Метод «substring» используется для выделения части строки. Синтаксис метода: « .substring(первый_индекс, последний_индекс) ». Например: Var a = "Hello world!"; document.write(a.substring(4, 8)); возвратит « o wo », от первой «o» (индекс 4) до второй (индекс 7). Заметьте, что «r» (индекс 8) не является частью подстроки. Также можно написать: Var a = "Hello world!"; document.write(a.substring(4)); Это даст целую подстроку « o world! », начиная от символа с индексом 4 и до конца строки. substrТакже есть метод «substr», работающий немного по-другому. В качестве второго аргумента он использует не номер индекса, а количество символов. То есть Document.write(a.substr(4, 8)); возвращает 8 символов, начиная от символа с индексом 4 («o»), то есть в результате получаем: « o world! » toLowerCase и toUpperCaseНаконец, 2 метода, которые иногда могут Вам пригодиться: «toLowerCase» переводит всю строку в нижний регистр, а «toUpperCase» — в верхний. Var b = "I am a student."; document.write(b.toUpperCase()); В результате получим « I AM A STUDENT. ». Тип данных строка (string) используется для представления текста. Соответственно, значениями типа string является текст. Любой текст в JavaScript является строкой. КавычкиСтроки в JavaScript должны быть заключены в кавычки. В JavaScript существует три вида кавычек: двойные (" "), одинарные (" ") и обратные (` `): "Строка в двойных кавычках" "Строка в одинарных кавычках" `Строка в обратных кавычках` Вид кавычек в начале и конце строки должен совпадать. Строки могут состоять из нуля и более символов: "" // Пустая строка "Строка" // Не пустая строка Строки с двойными и одинарными кавычками ничем не отличаются между собой по функционалу - они могут содержать лишь текст и управляющие последовательности. А вот строки с обратными кавычками имеют более широкий функционал. Такие строки могут содержать так называемые подстановки , обозначаемые знаком доллара и фигурными скобками ${выражение} . Подстановки могут содержать любые произвольные выражения: Let стр = "Мир!"; let стр2 = `Привет, ${стр}`; // Использование переменной в строке alert(стр2); // Привет, Мир! alert(`2 + 3 = ${2 + 3}.`); // 2 + 3 = 5. Выражение, расположенное в подстановке (${...}) вычисляется, и его результат становится частью строки. Строки в обратных кавычках могут занимать более одной строки, сохраняя все пробельные символы: Let числа = `Числа: 1 2`; alert(числа); // Числа: // 1 // 2 Строки с обратными кавычками называются строками-шаблонами или шаблонными литералами . Строки, заключённые в одни кавычки, могут содержать другие кавычки: "одинарные "кавычки" и `обратные` внутри двойных" "а здесь "так" и `так`!" `а здесь "так" и "так"!` Для удобства, большие строковые литералы можно разбивать на несколько строк, заканчивая каждую строку, кроме последней, символом \ : Alert("это всё одна \ длинная \ строка"); // это всё одна длинная строка alert("это всё одна \ длинная \ строка"); // это всё одна длинная строка alert(`это всё одна \ длинная \ строка`); // это всё одна длинная строка Кодировка символов строкиВне зависимости от того, какая кодировка установлена для страницы, в JavaScript для строк всегда используется кодировка UTF-16. В JavaScript строка - это неизменяемая, упорядоченная последовательность 16-битных значений, каждое из которых представляет символ Unicode. Для представления символов Unicode в JavaScript используется кодировка UTF-16. Символы включают в себя буквы, цифры, знаки пунктуации, специальные символы и пробельные символы. Длина строкиДлина строки - это количество 16-битных значений (а не самих символов), содержащихся в ней. Длину строки содержит свойство length: Alert("Привет".length); // 6 Символы, кодовые пункты которых не умещаются в 16 бит, обрабатываются в соответствии с правилами кодировки UTF-16 как последовательности из двух 16-битных значений. Это означает, что строка, имеющая длину, равную 2 (два 16-битных значения), на деле может представлять единственный символ: Alert("a".length); // 1 alert("𝑒".length); // 2 Нумерация и доступ к символам строкиКак уже было сказано, строка представляет собой упорядоченную последовательность 16-битных значений, каждому из которых соответствует определённый символ. Нумерация 16-битных значений в строке начинается с нуля, т. е. первое 16-битное значение находится под индексом 0, второе - под индексом 1 и т. д. Индекс - это порядковый номер. Получить символ строки (состоящий из одного 16-битного значения) можно с помощью индекса, заключённого в квадратные скобки [индекс] : Let стр = "Привет"; alert(стр); // П alert(стр); // В Чтобы с помощью индексов обратиться к символу, состоящему из двух 16-битных значений, нужно, используя конкатенацию, написать эти индексы так, чтобы в результате получилась последовательность из двух 16-битных значений: Let стр = "𝑒"; alert(стр + стр); // "𝑒" Строки неизменяемыеВ JavaScript строки неизменяемые. Это значит, что в уже существующей строке нельзя менять никакие символы или добавлять в неё что-то новое. Так как строки неизменяемые, то методы, используемые для работы со строками, возвращают новые строки, а не изменяют ту строку, относительно которой они были вызваны: Let стр = "Привет!"; alert(стр.toUpperCase()); // "HELLO" - новое возвращаемое методом значение alert(стр); // "hello" - первоначальная строка не изменена Чтобы изменить строку, можно создать новую строку и записать её в ту же самую переменную вместо старой строки: Let стр = "Строка"; стр = стр.toUpperCase(); alert(стр); // "СТРОКА" Управляющие последовательностиВ строковых литералах можно использовать управляющие последовательности. Управляющая последовательность - это последовательность, состоящая из обычных символов, которая обозначает символ, не представимый внутри строки другими способами. Управляющие последовательности предназначены для форматирования вывода текстового содержимого. В таблице ниже представлены управляющие последовательности:
Управляющие последовательности могут находиться в любом месте строки: Alert("Греческая буква сигма: \u03a3."); // Греческая буква сигма: Σ. alert("Многострочная\nстрока") // Многострочная // строка alert("внутри используются \"двойные\" кавычки"); // внутри используются "двойные" кавычки Если символ \ предшествует любому символу, отличному от приведённых в таблице, то он просто игнорируется интерпретатором: Alert("\k"); // "k" Символы Unicode, указываемые с помощью управляющей последовательности, можно использовать не только внутри строковых литералов, но и в идентификаторах: Let a\u03a3 = 5; alert(a\u03a3); // 5 КонкатенацияКонкатенация - это объединение двух или более строк в одну большую. Объединение происходит с помощью оператора + (плюс). При конкатенации каждая последующая строка добавляется в конец предыдущей: Var str1 = "Hello ";
var str2 = "World!";
document.write(str1 + str2 + " Значение любого типа, которое объединяется со строкой, будет неявно (автоматически) преобразовано в строку и далее будет произведена конкатенация. Var str1 = "Hello "; alert(str1 + 1); // "Hello 1" alert(true + str1); // "trueHello" alert(str1 + NaN); // "Hello NaN" |