From cf48b0ca1b8ee732343a364fb161ce73da30e5ac Mon Sep 17 00:00:00 2001 From: ParkSuMin Date: Thu, 16 Oct 2025 18:50:36 +0300 Subject: [PATCH] Lecture 4 --- lec/4.md | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 lec/4.md diff --git a/lec/4.md b/lec/4.md new file mode 100644 index 0000000..d4547c8 --- /dev/null +++ b/lec/4.md @@ -0,0 +1,155 @@ +# LEC 4. Java-bruh-script +## History +При разработке отталкивался от языков: +- Self - диалект Small Talk (первый ООП-подобный язык) +- Scheme - функциональное программирование + +## Особенности +- Мультпарадигменность +- Динамическая типизация +- Автоматическая работа с памятью и сборка мусора + +## Лексическая структура +- Unicode +- Чувствительность к регистру +- Комментарии в C++ style +- Необязательность к ; + +## Типы данных +Простейшие типы: +- number (8 byte) +- string +- boolean + +Тривиальные типы: +- null +- undefined + +Составные типы: +- object +- array (type of object) + +Специальные типы: +- functions +- Стандартные классы + - Date + - RegExp + - Error + - Math + +## Проверка на равенство и идентичности в JS + === - идентичность - максимально строгое сравнение + + == - равенство - допустимо приведение типов + +- null and undefined - равны +- string -> number + +## Преобразование типов +- string (String, toString, toFixed, toExponential, toPrecision) +- number (Number, parseInt, parseFloat) +- default + +## Функции + +```js +function someFunc(x, y, z){ + if (x === undefined){ + x = 1; + } + y = y || 555; + var a = 25; + return x * y + z / a; +} +``` +или +```js +var someFunc = function(x) {return x * x;} +``` +или +```js +var f = function fact(n){ + return n > 1 + ? n * fact(n-1) + : 1; +}; +``` +или +```js +var arr = [1,2,3]; + +arr.sort(function(left, right) { + return right - left; +}); +``` +или если хочется взлома ~~жопы~~ +```js +var square = new Function("x", "return x * x;"); +``` + +## Объекты +### Создание +```js +var obj1 = new Object() +var obj = {}; +var obj3 = {a: 100;}; +``` + +### Свойства +- Ключ-строка +- Значение - любой тип данных, включая объект +- Флаги: writable, enumerable, configurable + +### Удаление объекта +```js +delete obj.prop1; +``` + +### Проверка существования свойства +```js +if ('prop1' in obj){} +if (obj.prop1 === undefined){} +if (obj.hasOwnProperty('prop1')){} +``` + +### Доступ к свойствам +```js +obj.prop1 +obj['prop-2'] +obj[p] +``` + +### Перебор свойств объекта +```js +for (var key in obj) {}; +Object.keys(obj); +``` + +## Массивы +### Создание массива +```js +var a = new Array(1.2, "text", true, {x:1}); + +var b = new Array(10); // массив из undefined + +var c = []; +c[0] = 1; +``` + +### Fun work +```js +var arr = []; +arr[10]= 'hi'; +console.log(arr.length); // 11 +``` + +### Методы массивов +- Добавление/удаление + - pop/push (конец) + - shift/unshift (начало) +- Преобразование из строки в массив + - split + - join +- slice +- splice +- sort \ No newline at end of file