Сообщения

Сообщения за июнь, 2017

Основы JavaScript. Итого

Изображение
На то, чтобы пройти Основы JavaScript (уже во второй раз) ушло ровно две недели. На этот раз поняла почти всё, как мне кажется. Намного хуже дело с прочностью усвоения, потому что не подкреплённые практикой (одна-две задачи к каждой теме не в счёт) очень быстро забудутся. Как с этим быть пока не знаю. Из комментариев к учебнику Если вы читаете эту книгу впервые то вы точно всего не поймете. Дочитайте ее до конца. Потом сделайте небольшой перерыв и снова начните с самого начала. И тогда уже будет все очевидно.  Я пытался это осилить раза три и до половины не доходил за неделю. Вчера все закончил за день, вот что значит никогда не сдавайся я домучал... но реально трудно... Всё говорю себе, когда дойду до каких-то реальных задач по вёрстке, то закреплю, разберусь... часто практика даёт такую возможность. Впрочем, более понятных ресурсов я не нашёл совсем. Этот лучший. При должном упорстве, через полгода с улыбкой вспомните, то что сейчас вам кажется сложным.

Именованные функциональные выражения

Изображение
Итак, на сегодня мы знаем Function Declaration и Function Expression. Первые - обыкновенные функции function factorial (n) { ... } Вторые - именованные var factorial = function (n) { ... }; Отличие между ними: - время создания: Function Declaration создаются до выполнения первой строчки кода, а Function Expression по ходу выполнения, в момент, когда интерпретатор дойдёт до данной строки кода; - время вызова - Function Declaration можно вызвать до того, как она была объявлена, а Function Expression- нельзя; - условное объявление с if возможно только для Function Expression и ещё после Function Expression ставится точка с запятой, а после Function Declaration - нет Сегодня мы познакомимся с именованным функциональным выражением - Named Function Expression var f = function factorial (n) { ... }; Получается, у функции есть два имени. Первое - внешнее - f. Его можно менять, оно видно снаружи, по нему эта функция вызывается и работает. Второе имя - внутреннее - factor...

Рекурсия, стек

Изображение
Чтобы понять рекурсию, нужно понять рекурсию Рекурсия это обращение функции к самой себе. У рекурсии нет точки выхода, поэтому нужно условие - ограничитель рекурсии. Известный пример рекурсии - вычисление факториала.  function factorial(num){   while (num > 0) {     return num * factorial(num - 1);   }   return 1; } factorial(5) // 120 Здесь у меня с последним return 1; проблема была. Потому что добавить я его добавила, но зачем толком сказать не могла. Напишу ещё раз, вдруг забуду Считает функция факториал от 5 это 5 * на себя же от 4 а это 4 * на себя же от 3 а это 3 * на себя же от 2 а это 2 * на себя же от 1 а это 1 * на себя же от 0 а это уже return 1 А если бы я не указала чему равно значение функции если num = 0, то в вычисление попало бы неопределённое значение - undefined, и результат был бы NaN. Значение, на котором рекурсия заканчивается, называется базисом рекурсии. Ещё один пример - х в степени n рекурси...

Функции и функциональные выражения

Изображение
Разница между функцией и функциональным выражением - способ вызова     var sum = function (a, b) {return a + b;} //функциональное выражение     sum (2,4) // 6     function sum (a, b) {return a + b;} //функция     sum (2,4) // 6 Разница между ними в том, что функция обрабатывается интерпретатором в первую очередь, поэтому функцию можно вызвать ещё до того как она была объявлена в коде. Функциональное выражение, как и прочие переменные, обрабатывается по мере выполнения кода. С другой стороны, функция всегда глобальная. Функциональное выражение можно сделать локальным, объявив его при помощи ключевого слова var внутри другой функции. Переменные  a и b, которые идут в скобках после объявления функции, называются её параметрами. Значения этих переменных, с которыми она вызывается, - это аргументы функции. Аргументы передаются в параметры функции. Функция обрабатывает значения параметров и возвращае...

Конструкция switch

Изображение
Switch заменяет несколько условий if... else Синтаксис:     var x = a + 1 ;     switch(x) {       case 2:  // if (x === 2)         ...        break       case 3:  // if (x === 3)       case 4:  // if (x === 4)                   ...        break       default:         ...         break     } У нас есть некая переменная х и switch проверяет условие на строгое соответствие ей. То. что соответствие строгое ( === ) важно. Тип данных имеет значение. Оператор break означает, что после выполнения команды ( ... ), выполнение инструкции следует прекратить. Этот оператор не обязательный. Если его нет, интерпретатор находит первое истинн...

Циклы while, for

Изображение
 Циклы нужны для многократного повторения участка кода. Например, шагать от дома и до работы, или каждому члену семьи дать по подарку. Цикл while - делать что-то пока не     while ( ... ) { ... } Его более редкая разновидность     do { ... } while ( ... ) Используется если нужно сделать что-то по крайней мере один раз, а потом проверить условие Очень часто используется цикл for     for ( var i = 0; i < str.length; i++ ) {         ...     } Здесь мы перебрали все символы строки Предположим, нужно перебрать все символы строки, пока не дойдём до мягкого знака (если он есть) Такой цикл будет выглядеть как     for ( var i = 0; i < str.length; i++ ) {          ...         if ( str[i ]== "ь" ) break;     } Дойдя до  мягкого знака цикл остановится Может быть...

Тесты к третьей теме (11-14)

Изображение
Преобразование типов. Логические операторы Тесты https://jsfiddle.net/JeJiHo/7msb3nae/ - числа вводятся как обычно, строки в двойных кавычках Условные операторы : if, '?' Задача 1 https://www.codewars.com/kata/convert-boolean-values-to-strings-yes-or-no/train/javascript Задача 2 https://www.codewars.com/kata/jennys-secret-message/train/javascript

Логические операторы

Изображение
Логические операторы:

Взаимодействие с пользователем

Изображение
Основные методы и их синтаксис alert( "message" ); prompt( "question", ""); confirm( "question"); document.write(); alert() - принимает строку (или число, которое преобразует в строку) и возвращает undefined Выводит модальное окно с сообщением; prompt() - принимает строку и выводит модальное окно с вопросом и окном для ввода текста. Возвращает строку с текстом, который ввёл пользователь, пустую строку, если текст не ввели, но нажали Ок, или null, если нажали Cancel. Второй аргумент строка, содержание которой отображается в окне для ввода текста. Аргумент не обязательный, но без него в IE 9 будет баг; confirm() - принимает строку, выводит модальное окно с её содержимым и кнопками Ok и Cancel. Возвращает true или false в зависимости от того какая кнопка нажата. document.write() - принимает любые типы данных и в любом количестве, преобразует их в строки и выводит на экран. Методы alert(), prompt(), confirm() останавливают за...

Тесты ко второй теме (8-10)

Изображение
https://goo.gl/forms/FyBBSe6hXK6FrNkz2

Мой первый проект. Перевод из одной системы счисления в другую

Изображение
Мой первый самостоятельный проект на JavaScript: https://conwerter.github.io/

Побитовые операторы

Изображение
Прямой, обратный и дополнительный код числа http://www.reshinfo.com/dopolnit_code.php Перевод в разные системы счислений Перевести число из десятичной в другую систему счисления позволяет функция .toString(n); где n - основание системы счисления     (7).toString(2);      // "111" Перевод числа в десятичную систему счисления - функция parseInt("...", m), где m указывает из какой системы осуществляется перевод в десятичную     parseInt(111, 2);   // 7 Перевести число из любой системы m в любую систему n позволяет комбинация этих двух функций     parseInt("...", m).toString(n);  Например, переведём 111 из двоичной системы в троичную     parseInt(111, 2).toString(3); // 21   Функция . toString(n); переводит только числа и возвращает строку, функция parseInt("...", m); принимает и числа и строки и возвращает число. Побитовые операторы Оператор Использова...

Операторы сравнения и логические значения

Изображение
Операторы сравнения, к которым относится не только "больше" "меньше", но и "равно" и "строго равно", возвращают логические значения true или false. Сравнение строк Операторы сравнения стараются привести переменную к числу. При этом буквы приводятся к их номеру в кодировке ASCII Для перевода символов в эту кодировку используется функция .charCodeAt()     "a".charCodeAt(); // 97     "A".charCodeAt(); // 65     "а".charCodeAt(); // 1072 - удивлены? секрет прост: в первой строке а в латинской раскладке, в третьей - в кириллической При использовании функции .charCodeAt() нужно помнить, что она применима только к строкам, поэтому аргумент должен обязательно быть в кавычках Если первые символы равны, сравниваются вторые, третьи и т.д, как если бы эти слова были расположены в словаре Ну, ок. А если строка содержит число? Например что получится при сравнении строк "123" и "4"? Здесь js...

Основные операторы

Изображение
Операторы бывают - унарные         +1, -1, а++, а--, ++а, --а, typeof 2. Да, typeof тоже оператор -  бинарные         1 + 1, 4 * 3, 13 % 5 - тенарный такой оператор один-единственный. это условие         а == 3 ? 3 : 0 смысл этой записи: если а равно трём, тогда возвращается три, иначе - ноль Любой оператор возвращает значение. Например, 5 + 3 возвращает 8. typeof 2 возвращает number То, к чему применяется оператор, называется операнд Особенности некоторых операторов Плюс + 1. суммирует числа         2 + 2 возвращает 4 2. слагает строки и превращает в строку всё, к чему строка прибавляется         "2" + 2 возвращает "22" 3. унарный плюс превращает строку в число         +"2" возвращает 2 Все остальные арифметические операторы стараются пр...

Лирическое

Изображение
- А что же я на интервью тогда буду спрашивать? :) Начинаю я обычно с азов: Write the result of these expressions:
 6 / "3" "2" * "3"
 4 + 5 + "px" "$" + 4 + 5
 "4" - 2
 "4px" - 2
 7 / 0
 typeof null
 typeof {}[0]
 typeof ("4px" - 2)
 parseInt("09")
 5 && 2
 2 && 5
 5 || 0
 0 || 5 Сразу видно человек действительно знает язык или просто нахватался верхов.  Источник Попробую пройти это интервью. Без Google. Какой  Google на интервью. И без консоли браузера. 6 / "3"
 // 2, математический оператор строку приводит к числу, получаем 6/3 "2" * "3"
 // 6, потому что 2*3 4 + 5 + "px" // "9 рх" - вначале сложились два числа, получили 9. а потом прибавилась строка "$" + 4 + 5
 //  "$45" - при сложении со строкой всё выражение становится строкой "4" - 2
 // 2, потому что 4 - 2 ...

Ресурсы по Java Script

Изображение
Лучший русскоязычный ресурс https:// learn.javascript.ru Задачник (на английском)  https://www.codewars.com/kata/search/javascript Конспект по учебнику learn.javascript.ru - https://maxello.gitbooks.io/js-note/content/ Учебник learn.javascript.ru на английском - https://javascript.info/intro#what-is-javascript?map Например, если хочешь подтянуть язык, можно читать учебник на русском и на английском. И комментировать тоже. Хороший сайт с теорией - https://html5book.ru/ Здесь есть задания - https://www.sololearn.com/Play/JavaScript Правда, на английском и немного устаревшие Рекомендации по стилю кода - https://github.com/uprock/javascript Выразительный Javascript - https://karmazzin.gitbooks.io/eloquentjavascript_ru/ Задачи из этой книги - http://www.itmathrepetitor.ru/zadachi-po-javascript-iz-knigi-vyrazitelnyjj-javascript/ Пока всё )

Тесты к первой теме

Изображение
https://goo.gl/forms/Ksc6s0ONxXwWT1wC3

Преобразование типов

Изображение
Тип данных может меняться как самопроизвольно в процессе выполнения кода, так и в результате использования предназначенных для этого функций. Рассмотрим преобразование примитивных типов данных Преобразование к строке Прямое преобразование выполняет функция String(value) или value .toString(); Вообще .toString(); предназначен для объектов, но и примитивные типы данных он тоже преобразовывает String(123)   // "123" String( false )   //  "false" String( null )   //  "null" String( NaN )   //  "NaN" String( undefined )   //  "undefined" Так же всё, к чему прибавляется строка, превращается в строку Поэтому для преобразования к строке можно добавить пустую строку 123 + "" // "123" 1 + "2" + 3 // "123" но 1 + 2 + "3" // "33" - вначале сложили два числа 1 и 2, потом к ним прибавилась строка Строку выводит функция alert alert( 123 ) // ...