Базовый синтаксис JavaScript, продолжение

  Рет қаралды 25,044

Timur Shemsedinov

Timur Shemsedinov

Күн бұрын

Пікірлер: 80
@anatolykobzisty9827
@anatolykobzisty9827 5 жыл бұрын
---------------------------------------------------------- Базовый обзор типов данных ----------------------------------------------- 00:01:34 Number (integer / float) 00:02:11 String 00:02:15 Boolean 00:02:16 Object 00:03:08 Array 00:04:20 Метод array.push 00:04:31 Метод array.unshift 00:04:50 Метод array.shift 00:05:17 Метод array.pop 00:05:55 Оператор typeof 00:08:33 Метод Array.isArray 00:10:06 Оператор instanceof 00:10:48 Undefined 00:11:12 Null 00:11:55 NaN 00:14:18 Infinity --------------------------------------------------------------------------------------------------------------------------------------------------------------- 00:14:48 Тернарный оператор 00:16:15 Функция paseInt 00:24:23 Функция paseFloat 00:27:15 Удаление переменных 00:33:25 Побитовые операторы (Bitwise operators) 00:34:38 Побитовые операции 00:44:30 BigInt 00:56:30 Операторы сравнения 01:01:20 Очередность операторов (Operator precedence) 01:13:25 Оператор Switch
@LimonES268
@LimonES268 5 жыл бұрын
раз пять начинал изучать язык, и все по нулям Теперь понимаю, что когда его преподают линейно, ничего ни с чем нестыкуется, просто вылетает большая часть информации по дороге Наконец-то в ваших лекциях видна модель языка, и гибкость системы Вам уважение и блогадарность от всех нас!
@vasyapupkin997
@vasyapupkin997 2 жыл бұрын
ну и че выучил? 🤣
@sir_alist
@sir_alist 2 жыл бұрын
?
@ВладиславСавельев-ы8и
@ВладиславСавельев-ы8и 4 жыл бұрын
Для сортировки массива с, содержащего элементы типов `number` и `BigInt`, требуется использование функции сравнения и явного приведения типов, например, `[5n, 4, 1n, 14, -5, -1, 0, 12n, -8, -18n, 25].sort((x, y) => BigInt(x) - BigInt(y))`. Получаем ожидаемый результат: `[ -18n, -8, -5, -1, 0, 1n, 4, 5n, 12n, 14, 25 ]`.
@maksymleonidov7059
@maksymleonidov7059 5 жыл бұрын
20:40 - стало интересно, почему parseInt(0.0000005) парсится в 5. Eсли у parseInt аргумент не строка, то он преобразует его к строке. При этом число с 5-ю нулями после запятой остается "как есть" - (0.000005).toString() => "0.000005", а уже начиная с 6 нулей после запятой число приводится к такому виду - (0.0000005).toString() => "5e-7". Соответсвенно parseInt("5e-7") => 5
@antonparhom1251
@antonparhom1251 3 жыл бұрын
Спасибо вам Тимур Гафарович за интересную лекцию!
@dosxanzada
@dosxanzada 5 жыл бұрын
первая лекция было как то трудновато к пониманию, но, очень информативно! мое уважение!) удачи во всем!
@volodfast
@volodfast 6 жыл бұрын
Для тех кому интересно почему на 1:08:00 именно такой результат - learn.javascript.ru/logical-ops TLDR: В js операторы && и || возвращают результат операнда на котором закончилось вычисление - каким он был до преобразования в булевой тип.
@ИльгизШарафутдинов-ю4ц
@ИльгизШарафутдинов-ю4ц 5 жыл бұрын
можете подробнее описать? для чайников
@AlexChechel-f2e
@AlexChechel-f2e 5 жыл бұрын
@@ИльгизШарафутдинов-ю4ц Особенность JS - операторы && и || возвращают значение последнего вычисления (как написал автор поста выше). Это очень часто используемая особенность у практиков JS. Примеры использования: || - возворащает первое не false значение let value; let value2 = 3; v = value || 33; // v === 33 v = value2 || 33; // v === 3 v = value || value2 || 33 // v === 3 положит в переменную v либо значение value (если оно есть и в приведении к булеану выдаст true) либо 33. оператор || прекращает свою работу при первом же значении, которое конвертируется в true. (так как любое количество false и хотя бы одно true всегда вернут true) && - вернет последнее значение только в том случае, если все предыдущие значения будут true let canRun = true; let value = 'Hello'; let someFn = () => 3; let v = canRun && value && someFn(); v будет иметь значение 3 только в случае когда canRun и value приведутся к true. очень хорошо читается, кстати, так что пользуйтесь по возможности
@Max-kr4ie
@Max-kr4ie 4 жыл бұрын
@@AlexChechel-f2e спасибо.
@КотикПушок-д1щ
@КотикПушок-д1щ Ай бұрын
Спасибо, что дали ссылку на learnJavaScript. Очень хороший и структурированный учебник с примерами и подробным объяснением, как устроен js. 👍
@TimaGixe
@TimaGixe 2 жыл бұрын
Дякую! Чудовий матеріал, працюємо далі! 🚀
@ВикторГорбачев-в4в
@ВикторГорбачев-в4в 3 жыл бұрын
Ну, а в общем, классные уроки, особенно если сам прописываешь параллельно у себя в коде. Надеюсь осилю все 89)) Спасибо за труд!
@vasyapupkin997
@vasyapupkin997 2 жыл бұрын
ну и как осилил?
@СкандальныеПереписки
@СкандальныеПереписки 4 жыл бұрын
Если мы не передаём в sort() функцию сравнения, по дефолту сортирует как строку, поэтому и ошибка
@dmitrijponkin
@dmitrijponkin 6 жыл бұрын
Обалденные лекции!!! Спасибо Вам))
@evgenysmirnov4762
@evgenysmirnov4762 5 жыл бұрын
С && и || это крутая особенность js, способная запутать даже такого крутого специалиста)
@timashoff
@timashoff 2 жыл бұрын
28:04 небольшая неточность переменные объявленные через let так же не получится удалить оператором delete
@alexrain1845
@alexrain1845 3 жыл бұрын
на 1:12:50 путаница с оператором && (И) - там всё правильно, т.к. он и должен возвращать один из операндов, а не boolean тип
@TrancePartyVideo
@TrancePartyVideo 4 ай бұрын
Спасибо, посмотрел 👍
@DeLetSHift
@DeLetSHift Жыл бұрын
37:50 пришлось загуглить. Символ "^" всё-таки имеет своё название - ка́рет
@zaverden
@zaverden 6 жыл бұрын
21:12 почему так происходит - у вас неверный вывод Как вы сказали чуть раньше, первый параметр приводится к строке. если выполнить [0.5,0.05,0.005,0.0005,0.00005,0.000005,0.0000005,0.00000005].map(f => `${f}`), то видно, что в определенный момент применяется експоненциальная запись ("5e-7"), которая парсится до первого невалидного символа
@user-bn9rw7fx6x
@user-bn9rw7fx6x 2 жыл бұрын
Объясните мне пожалуйста, в конце занятия приводится пример стрелочных функций getDayWichoutSwich и getDayNumber, Почему в первом случае тело функции оборачивается в круглые скобки (), а во втором случае в фигурные {} ? Как узнать, когда используются обычные а когда фигурные скобки?
@TimurShemsedinov
@TimurShemsedinov 2 жыл бұрын
() это выражение, а {} это блок кода. Вот тело функции может быть или выражением или блоком. Блок - более частый случай, он может состоять из многих операторов, выражений и других блоков, а выражение сводится к вычислению одного значения, например, правая часть оператора присвоения, та, что до знака = или if () содержит выражение в скобках
@user-bn9rw7fx6x
@user-bn9rw7fx6x 2 жыл бұрын
@@TimurShemsedinov Спавибо вам огромное за ответ!
@ВикторГорбачев-в4в
@ВикторГорбачев-в4в 3 жыл бұрын
01:10:00 - возвращает 'year < nextYear' корректно. Оператор && не возвращает true/false, он возвращает false, если встречает ложное значение, либо последнее истинное значение. Оба значения истинные, поэтому он возвращает значение последнего истинного 'year < nextYear'. И даже если в тернарном операторе до ? будет ложное утверждение, то значение в скобках всё равно будет преобразовано в true, так как там будет содержаться строка, что при преобразовании в boolean будет возвращать true (это в данном примере). А операнды = как раз возвращают true либо false
@takedaheroku
@takedaheroku 3 жыл бұрын
Доброго времени суток, подскажите пожалуйста, где могут в реальных кейсах применяться побитовые операторы?
@TimurShemsedinov
@TimurShemsedinov 3 жыл бұрын
Везде, например для base64 и другого кодирования, для шифрования, для парса бинарных файлов, плотного хранения флагов по 8 в байте и много-много где
@cobwowcobwow6331
@cobwowcobwow6331 5 жыл бұрын
Спасибо за урок!
@husniddinqurbonboyev2634
@husniddinqurbonboyev2634 5 жыл бұрын
А где могут быть полезно в практике эти бинарные операции?
@yarikleto5515
@yarikleto5515 4 жыл бұрын
Самое очевидное: нужно реализовать какой-либо алгоритм шифрования. Помню использовал их для оптимизации математики (где это было критично), так как они (побитовые операторы) исполняются быстрее, чем методы обьекта Math, например.
@КосмоЁжик-е7т
@КосмоЁжик-е7т 2 жыл бұрын
Не услышал какой тип сравнения используется в swicth (просматривал бегло - может не заметил). Для программистов, пришедших из PHP, важно знать, что JavaScript здесь использует строгое равенство (в отличие от PHP).
@TimurShemsedinov
@TimurShemsedinov 2 жыл бұрын
Если что-то пишете про конкретный кусок кода, то добавляйте таймкод в сообщение, а то не удут же люди пересматривать видео, чтоб найти код
@TimurShemsedinov
@TimurShemsedinov 2 жыл бұрын
А так да, типы не приводятся автоматически в свиче, более того, если значение объект, даже методы типа valueOf и toString не вызываются для скрытого приведения.
@ВикторГорбачев-в4в
@ВикторГорбачев-в4в 3 жыл бұрын
Для сортировки массивов со смешанными типами number и bigInt можно прописать в колбеке метода sort правила сортировки и тогда сортируется правильно arr.sort((a, b) => Number(BigInt(a) - BigInt(b))); Можно конечно и так arr.sort((a, b) => Number(a) - Number(b));, но так есть вероятность, что числа будут очень большими и не получится сделать корректное вычитание
@TimurShemsedinov
@TimurShemsedinov 3 жыл бұрын
Да, но таких массивов ни где не должно быть
@auvarov
@auvarov 3 жыл бұрын
Спасибо
@jorgenUA
@jorgenUA 6 жыл бұрын
отлично, спасибо. Кантора по побитовым не понял - здесь дошло)
@TimurShemsedinov
@TimurShemsedinov 6 жыл бұрын
Я то вообще думал, что эти первые лекции не вышли, а только темы посложнее можно нормально смотреть )
@Doox911
@Doox911 6 жыл бұрын
Сколько const n при многократном вызове функции getDayNumber() будет хранится в памяти?
@TimurShemsedinov
@TimurShemsedinov 6 жыл бұрын
До следующего return, т.е. до выхода из функции. Расширенный ответ: этот идентификатор не попадает в замыкание и он скалярного типа number, т.е. хранится он в стеке и после выхода из функции будет удален даже без сборщика мусора, а сразу.
@Doox911
@Doox911 6 жыл бұрын
@@TimurShemsedinov Спасибо.
@КонстантинСуркин-ь9ч
@КонстантинСуркин-ь9ч 4 жыл бұрын
1:12:54 Оператор && возвращает первое ложное значение (именно значение), если не находит такое то последнее значение. Подробнее - learn.javascript.ru/logical-operators
@Antares19871
@Antares19871 6 жыл бұрын
Спасибо за лекцию. Очень классно что вы взялись за такое дело и пишите эти лекции. В битовых плаваете, вывод, они не особо и нужны, рассказали для галочки?
@smspivak
@smspivak 6 жыл бұрын
В орфографии и пунктуации плаваете, грамотность особо и не нужна, так, для галочки?
@АндрейБочарников-х5ъ
@АндрейБочарников-х5ъ 6 жыл бұрын
@@smspivak к чему ты это написал? Пропустил одну запятую, боооже, всем плевать, кроме тебя, типа умного человека. Выпендрежник ты сраный
@smspivak
@smspivak 6 жыл бұрын
@@АндрейБочарников-х5ъ Орфография и пунктуация - это не только одна запятая. Сраный был твой родовой канал, когда тебя папа на свет высирал.
@qburanp
@qburanp 5 жыл бұрын
@@smspivak человек на видео учит людей, а комментируют те, кто учится. Чувствуешь разницу?
@smspivak
@smspivak 5 жыл бұрын
@@qburanp Рыба с жабрами, а пиво холодное. Чувствуешь разницу?
@myroslavtkachenko3289
@myroslavtkachenko3289 5 жыл бұрын
44:51 "Очень большую цифру" резануло слух. Может Вы имели в виду число? Напомню, что цифра - это знак, с помощью которого записываются числа.
@TimurShemsedinov
@TimurShemsedinov 5 жыл бұрын
Да, конечно, оговорка, я сам люблю спросить студентов о том, какого типа цифра, а ведь chat char или строка)))
@martDKNY
@martDKNY 5 жыл бұрын
1:01:21 Precedence js operator
@АлександрВоронцов-г5л
@АлександрВоронцов-г5л 6 жыл бұрын
Как также vim настроить ? )
@TimurShemsedinov
@TimurShemsedinov 6 жыл бұрын
dnf install mc
@АлександрВоронцов-г5л
@АлександрВоронцов-г5л 6 жыл бұрын
Спасибо.
@qburanp
@qburanp 5 жыл бұрын
Это нано а не вим
@oleksiilamzin9888
@oleksiilamzin9888 5 жыл бұрын
@@qburanp mcedit
@jgblack5760
@jgblack5760 5 жыл бұрын
1:12:37 нет чего писать такие длинные выражения :D :D :D
@АндрейФилиппов-з3и
@АндрейФилиппов-з3и 4 жыл бұрын
необычный подход к типам данных undefined и null, мол 1 к скаляру, а 2 к объекту, задумался на какое то время, НО логично было бы тогда, чтобы undefined приводился к 0, однако выдает ошибку) про null вообще где то читал, что это закравшаяся ошибка в языке, которую из за легаси кода уже не исправят, но к объектному (ссылочному) типу кажется относить не правильно, мало логики в этом. Для себя решил, что null это "пусто", очень с 0 похоже, и к тому же приводится к 0, а undefined это что то системное и больше к логике (boolean: false), и перевожу его как "ничего", я вкладываю разные понятия интуитивно, но для правильного применения нужен опыт, которого пока очень мало) в общем мне кажется вряд ли когда то понадобится идентификатору присваивать undefined, чего не скажешь о null) Спасибо за лекцию!
@Vllad_Ko
@Vllad_Ko 4 жыл бұрын
delete удаляет только в объектах, let также как и const удалить delete низзя
@TimurShemsedinov
@TimurShemsedinov 4 жыл бұрын
Да, даже var нельзя удалить. Удаление переменных было доступно только в древние времена и для плохого кода, когда еще не было strict mode, а присвоение name = 5 создавало поле на глобальном контексте и из него можно было ужалить делитом. Но это все лучше забыть.
@tamilabodnar8115
@tamilabodnar8115 5 жыл бұрын
console.log(true && 1); // 1 console.log(1 && true); // true Отже... 1:11:12 может поменять местами выражения, чтоб a стало boolean) const year = 2018; const nextYear = 2019; const i = (year === 2018) && (year < nextYear ? 'year < nextYear' : 'year >= nextYear'); console.log(i,typeof i); // "year < nextYear" "string" const j = (year < nextYear ? 'year < nextYear' : 'year >= nextYear') && (year === 2018); console.log(j, typeof j); // true "boolean" ))
@fzbzr7489
@fzbzr7489 6 жыл бұрын
37:40 Циркумфлекс :)
@TimurShemsedinov
@TimurShemsedinov 6 жыл бұрын
:)
@АлександрВоронцов-г5л
@АлександрВоронцов-г5л 6 жыл бұрын
У меня почему-то ни в браузере ни в Node удалить переменную, объявленную через let нельзя. Но на 28 минуте говорится, что это можно сделать.
@TimurShemsedinov
@TimurShemsedinov 6 жыл бұрын
let переменные тоже нельзя удалять, это я ошибся, delete вообще использовать плохо и я его на практике не применяю, раньше delete использовался для удаления полей из глобального контекста (их просто спутать с переменными), но эта практика еще ужаснее.
@АлександрВоронцов-г5л
@АлександрВоронцов-г5л 6 жыл бұрын
@@TimurShemsedinov Теперь все встало на свои места. Спасибо.
@zatokeran
@zatokeran 3 жыл бұрын
👍
@airdropking5973
@airdropking5973 4 жыл бұрын
kzbin.info/www/bejne/p5KQiZ-bpqZjgLc получается 'year < nextYear' в результате сравнения приходит true далее выполняется логическое && справа тоесть тернарная инструкция, которая возвращает текст, все логично
@thalwho
@thalwho 6 жыл бұрын
developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators несколько дополнит про битовые операции
@ВиталийУлыбин-д4б
@ВиталийУлыбин-д4б 6 жыл бұрын
На 41 минуте начинается полная охенея. Правильно: >> - Сдвиг битов вправо с сохранением знака; >>> - Сдвиг битов вправо с заполнением нулями.
@ДенисПашков-к8х
@ДенисПашков-к8х 6 жыл бұрын
Это говорит о том, что лектор этим пользуется мало и это на практике мало кому необходимо.
@oleglagoda3931
@oleglagoda3931 6 жыл бұрын
@@ДенисПашков-к8х А && он тоже редко пользуется?
@МихаилОхотников-д8ч
@МихаилОхотников-д8ч 2 жыл бұрын
kzbin.info/www/bejne/p5KQiZ-bpqZjgLc - символ называется "Карет" ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%80%D0%B5%D1%82
@uaplatformacomua
@uaplatformacomua 3 жыл бұрын
Спасибо за лекцию!
Проект "Реальная инфляция". Считаем сами
10:46
Вячеслав Ширяев
Рет қаралды 5 М.
It’s all not real
00:15
V.A. show / Магика
Рет қаралды 20 МЛН
Таймеры, таймауты, EventEmitter в JavaScript и Node.js
1:16:25