Меню
✘Скрыть меню
Меню заработка
✘Скрыть меню
Загрузка.. nostroma.online from NOSTROMA - best life and beautiful workЭто ужасно тяжелая работа — ничего не делать – Оскар УайльдРешающую роль в работе играет не всегда материал, но всегда мастер – Максим ГорькийЯ слишком энергичен, чтобы работать – Марсель АшарЧто привлекло меня в карьере писателя? Отсутствие бумажной работы.Одни люди работают только для того чтобы работать, другие – для того, чтобы иметь возможность не работать в будущем.Занятие ерундой на рабочем месте развивает боковое зрение, слух и бдительность в целомСтоит статýя в лучах заката с огромным буем, в руках - граната.Друзья, если вы попались на лохотрон, не будьте эгоистами - предупредите других о таком сайте!Секрет гения — это работа, настойчивость и здравый смысл. Томас Эдисон
Меню заработка

Курсы JavaScript

Урок 2. Типы данных, приведение типов, функции


Типы данных

JavaScript - слабо-неявно-типизированный язык. Это значит, что переменные не объявляются с типом и можно присваивать и переприсваивать переменным значения разных типов, а также смешивать значения в выражениях.

Например, сравнение числового значения 5 со строкой "5" выдаст true, однако при строгом сравнении результатом будет false:

	5 == '5'; // true
	5 === '5'; // false
	
	5 + '5'; // равно строке '55'
	5 + 5; // равно числу 55
	

Всё, что находится в кавычках - это строковый тип данных.

В JavaScript поддерживаются простые типы данных (числа, строки, булевы) и объекты. Объект - это коллекция свойств. Специальные объектов как типа данных - это массивы и функции. Есть также элементарные значения null underfined NaN. NaN - Not a Number ("нечисло").

NaN - это значение, которое неравно само себе. Рассмотрим примеры, в которых итог вычисления будет равен NaN:

	+undefined; // NaN
	++undefined; // NaN
	Math.sqrt(-1); // NaN
	parseInt("string"); // NaN
	

Одинарный плюс, поставленный перед значением (унарный префиксный плюс), пытается свести это значение к числу.

Команда Math обращается к объекту, выполняющему математические операции (регистр важен!), а метод .sqrt() - извлекает квадратный корень из указанного числа.

Команда typeof позволяет определить тип указанной переменной или выражения, например: typeof x;

parseInt() - функция, приводящая указанную переменную к числу, например она может преобразовать строку "5" в число 5.

Приведение типов

Явное преобразование - Number(), String(), Boolean(), Object() без new - указание JavaScript трактовать то или иное значение как число, строку, булевский тип или объект.

Все значения, кроме null/undefined имеют метод toString(), обычно дающий то же, что возвращает функция String().

Если один из операндов инфиксного плюса является строкой, то второй тоже преобразуется в строку: x + "" - то же, что и String(x).

Унарный плюс преобразует свой операнд в число: +x - то же , что и Number(x).

Унарный восклицательный знак преобразует операнд в логическое значение и инвертирует его: !!x - то же, что и Boolean(x).

Number и parseInt

Метод toString() класса Number может преобразовать в представление в системе счисления с основаниями от 2 до 36.

Функция Number() ждёт литерала целого или вещественного числа, а parseInt/parseFloat пытаются разобрать максимально возможное количество символов числа и игнорируют всё, что следует за ними.

Функция Number() ждёт литерала целого или вещественного числа, а parseInt/parseFloat пытаются разобрать максимально возможное количество символов числа и игнорируют всё, что следует за ними.

Функции

В JavaScript функция - это объект особого типа, именованный и параметризованный блок программного кода, который определяется один раз, а использоваться может многократно. Это специфический тип данных: можно динамически генерировать функции, передавать их как параметры функций, возвращать их из функций, создавать массивы функций и т.д.

Функции могут быть именованными и безымянными, самовызывающимися и рекурсивными, они связанны с областями видимости.

Определение функций

Функции объявляются либо по имени, либо без имени, присваивая объявление переменной, либо создавая экземпляр объекта Function:

	var pow1 = function(x,y){return Math.pow(x,y)}; // undefined
	
	pow1(2,3); // 8
	
	var pow2 = new Function("x","y","return Math.pow(x,y)"); // undefined
	
	pow2(2,3); // 8
	

С помощью return функции могут возвращать значения (включая другие функции). Если функция ничего не возвращает, это рассматривается как undefined. return - это досрочное завершение работы функции (если выполнена эта команда, дальнейшее выполнение функции прекращается).

Наиболее часто встречается первый вариант объявления функций.

Значения "x" и "y" указанные в скобках - это аргументы функции:

	var x = 5;
	var y = 8;
	
	function calc(x,y){
		var z = x + y;
		return z;
		}; 
		
	var result = calc(x,y);
	console.log(result); // 13
	

В приведённом примере функция получает два аргумента, производит над ними вычисления и возвращает результат. Если вызвать функцию, которая ожидает аргументов, не передав их в неё, то значение этих аргументов будет приниматься за undefined:

	function calc(x){
		return x*x;
	};
	
	console.log(calc()); // undefined*undefined=NaN
	

Функция может быть и без аргументов. Объект arguments доступен внутри тела функции. Для примера возьмём функцию, которая вычисляет среднее арифметическое заранее неизвестного количества чисел. Здесь мы заглянем немного вперёд, используя в качестве примера ещё не изученные конструкции:

	function averageCalc(){
		var numsNumber = arguments.length;
		var numsSum = 0;
		for(i=0; i<numsNumber; ++i){
			numsSum += arguments[i];
		}
	return numsSum/numsNumber;
	}
	console.log(averageCalc(12,5,4)); 
	// результатом вычисления будет 7
	

arguments ведёт себя как массив, о чём мы поговорим позже.

Функцию, возвращающую среднее арифметическое переданных аргументов, в примере выше можно записать и в сокращённом варианте:

	function averageCalc(){
		for(i=0, numsSum=0, numsNumber=arguments.length; i<numsNumber; ++i){
			numsSum += arguments[i];
		}
	return numsSum/numsNumber;
	}
	console.log(averageCalc(12,5,4));
	// Результат: 7
	

arguments.length - высчитывает количество переданных аргументов

Ещё раз скажу, что два последних примера приведены только для демонстрации работы функций, можете скопировать код в консоль браузера и посмотреть на результат. Подробный разбор незнакомых кодов в этих примерах будет позже.

Комментарии

Введите Ваше имя:*

Введите e-mail:

Ваш комментарий:*

* Обязательные поля