Files
WebBurBurBur/lec/4.md
2025-10-16 18:50:36 +03:00

155 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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