что выведет этот код alert infinity
Задачи по JavaScript для начинающих
На этом уроке мы разберем задачи с реальных собеседований, решая которые, можно понять насколько вы подготовлены.
Задача #1
В переменной x лежит число 5, оператор инкремента ++ увеличивает значение переменной на единицу, но прежде вернется исходное значение.
let x = 5; alert(x++); // результат 6
Задача #2
console.log( [ ] + false ); //false
Что будет, если от строки отнять null? Мы получаем not a number. Что означает не математическую операцию и дальнейшие действия уже не имеет смысла продолжать.
Задача #3
У нас есть переменная y со значением 1. Затем меняем значение переменной y на 2 и присваиваем значение переменной y, в переменную x. Внимание вопрос, что находится в переменной x? Да тоже самое, что и в переменной y.
let y = 1;
let x = y = 2;
console.log(x); //Ответ «2»
Задача #4
Чему равна сумма пустого массива с числами? Мы уже знаем, что пустой массив является строкой, а любые математические действия со строками, дают в результате строку. Полученное значение «12» является строкой, а не числом.
console.log([ ] + 1 + 2); // Ответ «12»
Задача #5
Данный код содержит строку «1» и нулевой индекс. К каждому элементу строки можно обратиться по его индексу (порядковому номеру). Когда мы обращаемся к первому элементу строки, через её индекс, то действительно получаем значение «1».
console.log( «1»[0]); // Результат ‘1’
Задача #6
Задача #7
У нас есть два одинаковых массива, равны ли они между собой? Они не равны, так как в переменных с массивами хранятся лишь ссылки на разные хранилища данных. Здесь можно провести аналогию, когда два одинаковых дома имеют разные адреса.
const a = [1, 2, 3];
const b = [1, 2, 3];
console.log(a==b); //ответ false
Задача #8
Сравнивая между собой строки, машина руководствуется кодировками юникода. Все символы в программировании имеют свое соответствие кодам юникода. Сравниваются между собой не буквы, а коды юникода.
console.log(«Мёд» > «пчела»); // false
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 2 ):
document.write – добавляет текст к документу. В консоль же выводится результат действий, для самопроверки.
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
Типы данных
Значение в JavaScript всегда относится к данным определённого типа. Например, это может быть строка или число.
Есть восемь основных типов данных в JavaScript. В этой главе мы рассмотрим их в общем, а в следующих главах поговорим подробнее о каждом.
Переменная в JavaScript может содержать любые данные. В один момент там может быть строка, а в другой – число:
Языки программирования, в которых такое возможно, называются «динамически типизированными». Это значит, что типы данных есть, но переменные не привязаны ни к одному из них.
Число
Числовой тип данных ( number ) представляет как целочисленные значения, так и числа с плавающей точкой.
Infinity представляет собой математическую бесконечность ∞. Это особое значение, которое больше любого числа.
Мы можем получить его в результате деления на ноль:
Или задать его явно:
NaN означает вычислительную ошибку. Это результат неправильной или неопределённой математической операции, например:
Значение NaN «прилипчиво». Любая операция с NaN возвращает NaN :
Математические операции в JavaScript «безопасны». Мы можем делать что угодно: делить на ноль, обращаться с нечисловыми строками как с числами и т.д.
Скрипт никогда не остановится с фатальной ошибкой (не «умрёт»). В худшем случае мы получим NaN как результат выполнения.
Специальные числовые значения относятся к типу «число». Конечно, это не числа в привычном значении этого слова.
Подробнее о работе с числами мы поговорим в главе Числа.
BigInt
Для большинства случаев этого достаточно. Но иногда нам нужны действительно гигантские числа, например, в криптографии или при использовании метки времени («timestamp») с микросекундами.
Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
В данный момент BigInt поддерживается только в браузерах Firefox, Chrome, Edge и Safari, но не поддерживается в IE.
Строка
Строка ( string ) в JavaScript должна быть заключена в кавычки.
В JavaScript существует три типа кавычек.
Двойные или одинарные кавычки являются «простыми», между ними нет разницы в JavaScript.
Обратите внимание, что это можно делать только в обратных кавычках. Другие кавычки не имеют такой функциональности встраивания!
Мы рассмотрим строки более подробно в главе Строки.
Булевый (логический) тип
Булевый тип ( boolean ) может принимать только два значения: true (истина) и false (ложь).
Такой тип, как правило, используется для хранения значений да/нет: true значит «да, правильно», а false значит «нет, не правильно».
Булевые значения также могут быть результатом сравнений:
Мы рассмотрим булевые значения более подробно в главе Логические операторы.
Значение «null»
Специальное значение null не относится ни к одному из типов, описанных выше.
Оно формирует отдельный тип, который содержит только значение null :
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках.
Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».
В приведённом выше коде указано, что значение переменной age неизвестно.
Значение «undefined»
Оно означает, что «значение не было присвоено».
Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет undefined :
Технически мы можем присвоить значение undefined любой переменной:
…Но так делать не рекомендуется. Обычно null используется для присвоения переменной «пустого» или «неизвестного» значения, а undefined – для проверок, была ли переменная назначена.
Объекты и символы
Тип object (объект) – особенный.
Все остальные типы называются «примитивными», потому что их значениями могут быть только простые значения (будь то строка, или число, или что-то ещё). В объектах же хранят коллекции данных или более сложные структуры.
Объекты занимают важное место в языке и требуют особого внимания. Мы разберёмся с ними в главе Объекты после того, как узнаем больше о примитивах.
Тип symbol (символ) используется для создания уникальных идентификаторов в объектах. Мы упоминаем здесь о нём для полноты картины, изучим этот тип после объектов.
Оператор typeof
Оператор typeof возвращает тип аргумента. Это полезно, когда мы хотим обрабатывать значения различных типов по-разному или просто хотим сделать проверку.
У него есть две синтаксические формы:
Другими словами, он работает со скобками или без скобок. Результат одинаковый.
Вызов typeof x возвращает строку с именем типа:
Последние три строки нуждаются в пояснении:
Итого
В JavaScript есть 8 основных типов.
Оператор typeof позволяет нам увидеть, какой тип данных сохранён в переменной.
В следующих главах мы сконцентрируемся на примитивных значениях, а когда познакомимся с ними, перейдём к объектам.
Практическая работа №4
«Основы работы с JavaScript»
Цель работы: научиться работать с данными на языке JavaScript.
Строки и числа
1’строка’, «строка»; //это примеры строк
Переменные
Одним из самых главных и распространенных объектов в программировании является переменная.
Переменная— это такой объект, который может хранить внутри себя различные данные, например, строки или числа.Имя переменной должно состоять из английских букв: больших или маленьких, а также цифр и знака_подчеркивания.
В JavaScript при объявлении переменной обязательно должно быть написано ключевое слово var:
var a; //тут мы объявили переменную
var a, a1, isVar, is_var; //тут мы объявили группу переменных
Операция присваивания
Очень важным элементом программирования является операция присваивания. Пример присваивания:
var a = 4; //мы присвоили переменной a значение 4
Комментарии
В коде JavaScript, так же, как и в HTML и CSS, можно оставлять комментарии. Они могут быть многострочными и однострочными:
var a = 4; //это пример однострочного комментария.
/* Это пример многострочного комментария. */
var a = 4;
Комментарии игнорируются браузером при выполнении кода, в них можно оставлять какие-либо пометки или временно закрывать код от исполнения, чтобы потом его при необходимости вернуть (откомментировать).
Функция alert
В JavaScript существует специальная функция alert, которая позволяет вывести какой-либо текст в окно браузера в виде диалогового окошка.
Следующий код выводит на экран заданный текст:
alert(‘Привет, мир!’); //выведет на экран фразу ‘Привет, мир!’
А в следующем коде переменной textприсваивается фраза, а затем содержимое этой переменной выводится на экран:
var text = ‘Привет, мир!’;
alert(text); //выведет на экран фразу ‘Привет, мир!’
Математические операции
В JavaScript между числами можно совершать различные математические операции:
alert(2 + 3); //выведет 5
alert(5 — 1); //выведет 4
alert(2 * 3); //выведет 6
alert(6 / 2); //выведет 3
Получение определенного символа строки
В JavaScript можно получить доступ к определенному символу строки по его номеру таким образом: a[n] – n-ный символ строки (учтите, что нумерация идет с нуля):
var a, b; //объявим наши переменные
a = ‘abcde’; //в переменной а будет храниться значение ‘abcde’
b = a[0]; //в переменной b будет ‘a’
b = a[1]; //в переменной b будет ‘b’
b = a[4]; //в переменной b будет ‘e’
Операции инкремента и декремента
Операция a++ или ++a – увеличивает переменную a на единицу. Эта операция называется инкремент.
var a = 1;
a++; //увеличит a на 1, что соответствует коду a = a + 1;
var a = 1;
В каких случаях проявляется разница между ++a и a++.
Мы уже рассматривали код, который демонстрирует сложности с операцией присваивания:
var a = 2;
a = a + 3;
В данном случае мы присваиваем переменной a ее текущее значение, увеличенное на 2. Однако JavaScript позволяет записать этот код еще короче с помощью оператора +=:
var a = 1;
a += 3; //этот код полностью эквивалентен коду a = a + 3;
var a = 2;
var a = 2;
a *= 3; //этот код полностью эквивалентен коду a = a * 3;
var a = 2;
a /= 3; //этот код полностью эквивалентен коду a = a / 3;
Значения undefined и null
alert(a); //выведет undefined
Значения true и false
Значение NaN
alert(‘abc’*3); //выведет NaN
Функция prompt
Кроме функции alert, которая выдает диалоговое окошко, существует функция prompt, которая не только выдает окошко с текстом, но и позволяет получить от пользователя какой-либо текст. Этот текст можно записать в переменную и затем выполнить над ним какие-либо операции.
В следующем примере мы спросим имя пользователя, запишем его в переменную name и с помощью функции alert выведем на экран:
var name = prompt(‘Ваше имя?’);
alert(‘Ваше имя: ‘+name);
Функция confirm
В следующем примере функция confirm выведет диалоговое окно с вопросом ‘Вам уже есть 18 лет?’.
var ok = confirm(‘Вам уже есть 18 лет?’);
Типизация переменных
Что будет, если попробовать перемножить, к примеру, число и строку, вот так: 3 * ‘3’? В результате вы получите число 9. Это значит, что JavaScript автоматически осуществляет преобразование типов при необходимости, вам не нужно за это переживать. Однако, есть нюанс: если мы попытаемся сложить строку и число, то JavaScript сложит их как строки, а не как числа, вот так: ‘3’ + 3 получится строка ’33’, а не число 6.
В случае, например, с умножением JavaScript понимал, что нельзя перемножить строки, поэтому строки переводил в числа и перемножал их. А случай со сложением можно трактовать двояко: складывать как строки или как числа (плюс-то используется как для сложения строк, так и чисел).
Второй вариант такой: можно сказать Ява скрипту, что мы хотим явно преобразовать строку к числу. Это делается с помощью функции Number, вот так: Number(‘3’) + 3. В результате получится 6, а не ’33’.
К числам могут преобразовываться не только строки, но и любые другие типы данных, например true тоже можно преобразовать к числу таким образом: Number(true). Можно преобразовывать и к другим типам с помощью функций Boolean, String и других подобных.
Примеры решения задач
Задача 1
Задача. Создайте переменную str и присвойте ей значение ‘abcde’. Обращаясь к отдельным символам этой строки выведите на экран символ ‘a’, символ ‘b’, символ ‘e’.
var str = ‘abcde’;
alert(str[0]); //выведем букву ‘a’
alert(str[1]); //выведем букву ‘b’
alert(str[4]); //выведем букву ‘e’
Задача2
Задача. Напишите скрипт, который считает количество секунд в часе.
alert(60 * 60);
Если нам нужно получить количество секунд в сутках, то умножим еще и на 24 (так как в сутках 24 часа):
alert(60 * 60 * 24);
Задача3
var num = 1;
num = num + 12;
num = num — 14;
num = num * 5;
num = num / 7;
num = num + 1;
num = num — 1;
Решение: заменим все подходящие места на сокращенную форму записи. К примеру, вместо num = num + 12 можно написать num += 12, а вместо num = num + 1 будет num++. Результат переделки будет выглядеть так:
var num = 1;
num += 12;
num -= 14;
num *= 5;
num /= 7;
num++;
num—;
Задачи для самостоятельного решения (n- номер варианта).
Работа с переменными
1 Создайте переменную num и присвойте ей значение 3+n. Выведите значение этой переменной на экран с помощью метода alert.
2 Создайте переменные a=10+n и b=2+n. Выведите на экран их сумму, разность, произведение и частное (результат деления).
3 Создайте переменные c=15+n и d=2+n. Просуммируйте их, а результат присвойте переменной result. Выведите на экран значение переменной result.
4 Создайте переменные a=10+n, b=2+n и c=5+n. Выведите на экран их сумму.
5Создайте переменные a=17+n и b=10+n. Отнимите от a переменную b и результат присвойте переменной c. Затем создайте переменную d, присвойте ей значение 7+n. Сложите переменные c и d, а результат запишите в переменную result. Выведите на экран значение переменной result. Где n–номер варианта.
Работа со строками
6 Создайте переменную str и присвойте ей значение ‘Привет, ФИО!’. Выведите значение этой переменной на экран.
7 Создайте переменные str1=’Привет, ‘и str2=’ФИО!’. С помощью этих переменных и операции сложения строк выведите на экран фразу ‘Привет, ФИО!’
8Создайте переменную name и присвойте ей ваше имя. Выведите на экран фразу ‘Привет, %Имя%!’.
9Создайте переменную age и присвойте ей ваш возраст. Выведите на экран ‘Мне %Возраст% лет!’.
Функция prompt
10Спросите имя пользователя с помощью метода prompt. Выведите с помощью alert сообщение ‘Ваше имя %имя%’.
11Спросите у пользователя число(n). Выведите с помощью alert квадрат этого числа.
Что выведет этот код alert infinity
Все числа в JavaScript, как целые так и дробные, имеют тип Number и хранятся в 64-битном формате IEEE-754, также известном как «double precision».
Здесь мы рассмотрим различные тонкости, связанные с работой с числами в JavaScript.
В JavaScript можно записывать числа не только в десятичной, но и в шестнадцатеричной (начинается с 0x ) системе счисления:
Если количество нулей отрицательно, то число сдвигается вправо за десятичную точку, так что получается десятичная дробь:
Деление на ноль, Infinity
Представьте, что вы собираетесь создать новый язык. Люди будут называть его «JavaScript» (или «LiveScript». неважно).
Что должно происходить при попытке деления на ноль?
Как правило, ошибка в программе. Во всяком случае, в большинстве языков программирования это именно так.
Но создатель JavaScript решил пойти математически правильным путем. Ведь чем меньше делитель, тем больше результат. При делении на очень-очень маленькое число должно получиться очень большое. В математическом анализе это описывается через пределы, и если подразумевать предел, то в качестве результата деления на 0 мы получаем «бесконечность», которая обозначается символом ∞ (в JavaScript Infinity ).
Бесконечность можно получить также, если сделать ну очень большое число, для которого количество разрядов в двоичном представлении не помещается в соответствующую часть стандартного 64-битного формата, например:
Если математическая операция не может быть совершена, то возвращается специальное значение NaN (Not-A-Number).
Например, деление 0/0 в математическом смысле неопределено, поэтому его результат NaN :
Значение NaN используется для обозначения математической ошибки и обладает следующими свойствами:
Следующий код ничего не выведет:
««smart header=»Забавный способ проверки на NaN «
Округление до заданной точности
Для округления до нужной цифры после запятой можно умножить и поделить на 10 с нужным количеством нулей. Например, округлим 3.456 до 2-го знака после запятой:
Таким образом можно округлять число и вверх и вниз.
Округление идёт до ближайшего значения, аналогично Math.round :
Итоговая строка, при необходимости, дополняется нулями до нужной точности:
Если нам нужно именно число, то мы можем получить его, применив ‘+’ к результату n.toFixed(..) :
««warn header=»Метод toFixed не эквивалентен `Math.round`!» Например, произведём округление до одного знака после запятой с использованием двух способов: `toFixed` и `Math.round` с умножением и делением:
Как видно результат разный! Вариант округления через Math.round получился более корректным, так как по общепринятым правилам 5 округляется вверх. А toFixed может округлить его как вверх, так и вниз. Почему? Скоро узнаем!
Ради справедливости заметим, что ошибка в точности вычислений для чисел с плавающей точкой сохраняется в любом другом языке, где используется формат IEEE 754, включая Java, C, PHP, Ruby, Perl, Python.
Другие математические методы
JavaScript предоставляет базовые тригонометрические и некоторые другие функции для работы с числами.
Встроенные функции для тригонометрических вычислений:
Math.acos(x) : Возвращает арккосинус x (в радианах)
Math.asin(x) : Возвращает арксинус x (в радианах)
Math.atan(x) : Возвращает арктангенс x (в радианах)
Math.sin(x) : Вычисляет синус x
Math.cos(x) : Вычисляет косинус x
Math.tan(x) : Возвращает тангенс x
Функции общего назначения
Разные полезные функции:
Math.abs(x) : Возвращает абсолютное значение числа
Math.max(a, b, c. ) : Возвращает наибольший из списка аргументов
Math.min(a, b, c. ) : Возвращает наименьший из списка аргументов
Для красивого вывода чисел в стандарте ECMA 402 есть метод toLocaleString() :
Его поддерживают все современные браузеры, кроме IE10- (для которых нужно подключить библиотеку Intl.JS). Он также умеет форматировать валюту и проценты. Более подробно про устройство этого метода можно будет узнать в статье info:intl, когда это вам понадобится.
Существуют и другие математические функции. Вы можете ознакомиться с ними в справочнике в разделах Number и Math.
Типы данных JavaScript
Курс: Основы HTML и CSS
Курс: Разработка на C#
Курс: Python-разработчик с нуля
Осваивайте профессию, начните зарабатывать, а платите через год!
Курсы Python Акция! Бесплатно!
Станьте хакером на Python за 3 дня
Веб-вёрстка. CSS, HTML и JavaScript
Станьте веб-разработчиком с нуля
В этом уроке мы познакомимся с очень важным понятием – типы данных JavaScript. Мы рекомендуем внимательно отнестись к данному понятию – если не осознать его с самого начала, то потом придется часто сталкиваться со странным поведением созданной вами программы.
Динамическая типизация
В процессе работы компьютерные программы манипулируют различными значениями, каждое из которых может быть обработано в языке программирования и относится к определённому типу данных.
В JavaScript типы данных можно разделить на две категории: простые (их также называют примитивными) типы и составные (их также называют ссылочными или объекты).
JavaScript – это слабо типизированный или динамический язык программирования, который позволяет определять типы данных, осуществлять синтаксический анализ и компиляцию как говорится «на лету», на этапе выполнения программы. Это значит, что вам не нужно определять тип переменной заранее. Тип определится автоматически во время выполнения программы.
Таким образом, в различных участках программы одна и та же переменная может принимать значения разных типов:
Типы данных
Стандарт ECMAScript® определяет следующие типы данных:
Разница между примитивными и составными типами
Сценарий в приведенном примере объявляет переменные, выполняет их инициализацию (присваивает значения), а затем выводит тип каждой переменной.
Разница между примитивными и составными типами данных проявляется при копировании их значений.
Когда переменной присваивается значение простого типа, то в переменную записывается само значение (например число). Когда мы присваиваем переменную простого типа в другую, она копирует значение. В результате каждая переменная будет иметь своё значение и изменения в одной из переменных никак не сказывается на значении другой переменной:
Когда переменной присваиваем значение составного (ссылочного) типа, то в переменную записывается ссылка на значение (ссылка на объект). Когда мы присваиваем одну переменную (в значении которой ссылка на составное значение) другой переменной, то происходит копирование ссылки на составное значение. В результате обе переменные ссылаются на одно и то же составное значение и изменения в значении одной из переменных будут сказываться на другой переменной:
Примитивные типы
Все типы данных в JavaScript, кроме объектов, являются неизменяемыми или иммутабельными (англ. immutable). Это значит, что их значения не могут быть модифицированы, а только перезаписаны новым другим значением. Например, строки нельзя корректировать посимвольно – их можно переписать только полностью. Значения таких типов называются «примитивными».
Простейшие данные, с которыми может оперировать программа, называются литералами. Литералы — это числа или строки, которые используются для представления значений в JavaScript. Предоставляемая информация может быть самой разнообразной, а поэтому значения бывают различных типов. Простейшие типы данных в JavaScript называются основными типами данных: числа, строки и логические значения. Все они относятся к «примитивным».
Булевый (логический) тип «boolean»
Логические, или булевы значения (по фамилии их изобретателя — Буля), могут иметь лишь одно из двух значений: true (истина) или false (ложь). Значения true или false обычно появляются в операциях сравнения или логических операциях.
Приведенная ниже программа создает булеву переменную, а затем тестирует ее значение с использованием инструкции if/else :
Примечание: При записи булевых значений их не заключают в кавычки: var myVar = true;
В то же время объявление var myVar = «true» создает строковую переменную.
Тип данных Number
В JavaScript, нет различия между целым числом и числом с плавающей точкой – по сути, JavaScript представляет все числа в качестве значения с плавающей точкой.
Число, находящееся непосредственно в коде программы, называется числовым литералом. Помимо десятичных целых литералов JavaScript распознает шестнадцатеричные значения.
Числа в шестнадцатиричном формате могут включать любую последовательность цифр от 0 до 9 и буквы от a до f, которая обязательно начинается с последовательности символов «0x».
Кроме того, JavaScript содержит специальные числовые значения: