Lecture 4
This commit is contained in:
155
lec/4.md
Normal file
155
lec/4.md
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user