Skip to content

Instantly share code, notes, and snippets.

@Alex-Space
Last active August 29, 2015 14:22
Show Gist options
  • Save Alex-Space/c77caa5edc871ba78c02 to your computer and use it in GitHub Desktop.
Save Alex-Space/c77caa5edc871ba78c02 to your computer and use it in GitHub Desktop.
doc JavaScript
Непонятное:
callback функция (функция обратного вызова?)
Когда выучу теорию JS, буду практиковать тут http://www.codewars.com/
Прочитать книжку - JavaScript: The Good Parts
«Красноречивый JavaScript»: Замечательная книга (также доступна печатная версия), посвящённая основам JavaScript
Тестовая оценка владения JS: подборка тестов с ошибками на различные темы по JavaScript; сможете ли вы переписать код тестов так, чтобы он заработал?
10 вещей, которым я научился из исходного кода jQuery — старенькая, но мощная вещь от Пола Айриша, демонстрирующая чему можно научиться, читая чужой код.
http://www.w3resource.com/javascript-exercises/ - задачи по JS и не только
http://www.codewars.com/ - задачи по JS и не только
http://bonsaiden.github.io/JavaScript-Garden/ru/
http://largescalejs.ru/
http://learn.javascript.ru/
http://cidocs.ru/coffeescript/
http://contribute.jquery.org/style-guide/js/ - стайл гайд
http://karmazzin.gitbooks.io/eloquentjavascript_ru/ - отличная книжка, которую перевели на русский
http://nnm-club.me/forum/viewtopic.php?t=720358 - вторая часть с сайта Codeschool по JS, первая часть у них на сайте бесплатная ( там же бесплатный доступ на 2 дня от многих, они суммируются)
http://habrahabr.ru/post/119851/ - как выучу JS вернуться к этой статье
http://habrahabr.ru/post/239065/ - вопросы на собеседовании по JS
Замыкание - способность функции замыкать ссылку на переменную из вышестоящего контекста
Литерал – это любое значение указанное явным образом в коде. (это значение, которое не нужно вычислять. (var str = "sdfsdf"))
Примитивные типы данных в JS - Строка, число, объект, undefiend, null, boolean
Statement - инструкция, то из чего состоит JS код.
semicolon - точка с запятой
expression - выражение, оно всегда возвращает какое-либо значение
CamelCase - верблюжий стиль
UnderCase - нотация черз нижнее подчеркивание
underscore - стиль нижнего подчеркивания
JS - это объектно ориентированный язык программирования с прототипной формой наследования. Он клиентский и единственный, который понимается всеми браузерами.
Преимущество JS в том, что можно использовать особенность, которая заключается в том, что простые типы данных ведут себя как объекты. Можно сразу передать значение в переменную, без обертки, которая определяет тип данных.
Есть бинарные, унарные и тернарные операторы. Они отличаются количеством операндов:
унарный - это когда используется один операнд (++i)
бинарный - это когда два операнда(2 + 2)
тернарный (? :)
Работа с числами:
.toFixed(количество знаков после запятой) - метод приводит число к числу с плавающей точкой
.toExponential() - приводит число к экспоненциальному виду
.toPrecision(до какого количества цифр округлить) - округление до необходимого кол. цифр, включая знаки после запятой
.toString() - метод перевода числового типа в троку
Методы работы с объектом Math - это сложные математические вычисления:
Math.sqrt(тут пишем число, которое будем преобразовывать в корень) - вычисление корня
Math.pow(5, 2) - возведение в степень. Первое число это число которое возводят, а второе, число и есть степень в которую возводят.
Math.floor(пишем число, или переменную с числом) - медот округления к целому меньшему числу. 234.70 округлит в 234
Math.pow() - метод округления к большему числу
Math.round - метод округления к тому числу, которое ближе к целому. 234.7 округлит к 235, а 234.4 округлит к 234. (5.5 округлит в 6)
NaN - not a number (это значение, которое нельзя вычислить) например fsdfsdf+4
NaN токсичен, это значит, что если в какой-то части выражения что-то нельзя вычислись, то все выражение в целом принимает значение NaN
Есть специальная функция проверяющая выражение на NaN. isNaN() - если в скобках написать выражение которое можно вычислить, покажет false если выражение в скобках нельзя вычислить, тогда будет false
Infinity - это бесконечность. Бывает положительная бесконечность(Infinity) и отрицательная(-Infinity). Бесконечность всегда больше любого числа, чтобы к ней не прибавить, она будет бесконечностью.
Строковый тип данных и методы для работы с ними:
.charAt(число) - показывает символ в строчном типе данных в соответствии с индексом.
.charCodeAt() - возвращает код симовола
.substring(5, 10 - выведет с пятого по десятый символ в строке) - выводит стоку с того символа, индекс которого вводим в первый аргумент, а во второй можно ввести индекс того символа в троке, по какой нам нужно вернуть значение.
.slice(-10 это значит что он выведет 10 символов с конца строки) - метод выводит с конца необходимое количество символов
.substr(14, 7 - выведет 7 символов начиная с 14-го) - имеет 2 агрумента в скобках, первый - с какого символа выводить, второй - сколько нужно вывести символов
.splite(' тут будет сепаратор, который указывает на разделяемые части в строке') - разбивает строку на массив из слов-символов, и в качестве разделителя элементов массива можем выбрать любой символ в строке, который будет разделять эту строку.
.replace() - метод замены одного на другое. Имеет два параметра, в качестве первого аргумента указывается то что меняем, в качестве второго, то, на что меняем.
Заменяет только первое встреченное значение. Если есть и второе, или больше, оно их не трогает.
.indexOf("a" - вернет значение индекса первого символа a который встретит) - находит индекс символа в строке по символу
.toUpperCase() - к верхнему регистру, без параметров
.toLowerCase() - к нижнему регистру, без параметров
Преобразование типов данных. Данные можно превращать друг в друга. Есть три преобразования: Логическое, числовое, строковое.
.toString() // привести переменную к строковому значению, к которой применяется этот метод
parseInt('строчный тип данных содержащий число, напирмер 100 px', 10 - это приведение числа к десятичному, можно не писать второй аргумент); // вытаскивает из строчного типа данных все целые числа
parseFloat("10.24em", 10); // вытаскивает из строчного типа данных все числа с плавающей точкой
(123 + '') // переводит в строку
(+'123') // переводит в числовой тип данных
(+"") // переводит значение в 0. Пустая строка - false, + переводит в число, получается 0
(+true) // Тут получается 1
(+false) // Тут получается 0
(!!"23") // В булевое значение - true. 23 это тру, хоть и строчный тип данных, переворачиваем с !, и получаем false, и еще раз ! получаем true.
Объекты. Объект это контейнер из ключей и свойств к этим ключам. В JS объектами являются сами объекты, функции, регулярные выражения, массивы. В ним не относятся простые типы данных.
Есть 2 нотации обращения к свойствам объектов. Точечная нотация, самая распространенная (obj.property). И есть нотация квадратных скобок obj[property]
Если нам нужно какое-то свойство по умолчанию, делают так (obj.nostring || 'значение по умолчанию')
Объекты всегда являются ссылками, они не копируются.
Если нам надо удалить какое-нибудь свойство объекта, мы делаем:
(delete obj.property) - удаляется только свойство объекта, свойство прототипа не удаляется
Массивы - упорядоченные наборы данных, перечисленные индексами.
Чтобы удалить элемент массива, нужно использовать метод .splice(первый атрибут - с какого удаляем, второй атрибут, сколько удаляем); Так у нас не будет никаких дырок в массиве с undefiend.
Когда нужно преобразовать массив в строку, используем метод .join(", "). В параметры которого указываем разделитель, который будет разделять слова в строке.
.push("new_str") - метод добавляет в конец массива необходимый элемент. В качестве аргумента принимает новый элемент массива
.pop() - метод удаляет из конца массива последний элемент. Аргументов не содержит.
.shift() - удаляет первый элемент массива. Без параметров.
.unshift() - добавляет в начало массива новый элемент
.reverse() - переворачивает массив в обратную сторону. Первый элемент массива становится последним, и так далее. Без параметров.
.slice() - режет массив. Имеет 2 параметра. Первый - с какого индекса резать, второй - по какой индекс резать. Все что попало в промежуток и будет новым массивом.
.sort() - метод сортирует массив. По дефолту работает не корректно, и в параметры нужно писать свою функцию.
.concat() - метод создает и возвращает новый массив, в параметры передаем аргументы, которые хотим присоединить к массиву, для которого вызывается метод.
Циклы. В JS есть 4 типа циклов. У всех циклов есть условие, и выражение, т.е. тело цикла. Один проход цикла называется - итерация. В цикле переменные не задавать(совет Sorax)!
for () {} - имеет три параметра записывающиеся через semicolons 1) инициализация, условие, инкремент(дикремент). ( for(var i; i<10; i++) )
for ( property in obj) {} - обычно используется для обхода объектов.
while () {} - самый простой цикл. Пока условие истинно, тело цикла будет выполняться.
do while () {} - Сначала выводит тело цикла, а потом проверяет условие. Даже если условие false, тело цикла будет выполнено хотя бы один раз. После do пишется команда, что нужно сделать, например console.log('Hello!')
Функции.
.call() - метод применяется когда я хочу вызвать функцию как метод какого-то объекта. В качесвте параметров передается тот самый объект, а дальше остальные параметры - это уже парамерты самой функции с которыми мы хотим ее вызвать как метод.
.apply() - метод применяется
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment