3.1 KiB
3.1 KiB
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
Функции
function someFunc(x, y, z){
if (x === undefined){
x = 1;
}
y = y || 555;
var a = 25;
return x * y + z / a;
}
или
var someFunc = function(x) {return x * x;}
или
var f = function fact(n){
return n > 1
? n * fact(n-1)
: 1;
};
или
var arr = [1,2,3];
arr.sort(function(left, right) {
return right - left;
});
или если хочется взлома жопы
var square = new Function("x", "return x * x;");
Объекты
Создание
var obj1 = new Object()
var obj = {};
var obj3 = {a: 100;};
Свойства
- Ключ-строка
- Значение - любой тип данных, включая объект
- Флаги: writable, enumerable, configurable
Удаление объекта
delete obj.prop1;
Проверка существования свойства
if ('prop1' in obj){}
if (obj.prop1 === undefined){}
if (obj.hasOwnProperty('prop1')){}
Доступ к свойствам
obj.prop1
obj['prop-2']
obj[p]
Перебор свойств объекта
for (var key in obj) {};
Object.keys(obj);
Массивы
Создание массива
var a = new Array(1.2, "text", true, {x:1});
var b = new Array(10); // массив из undefined
var c = [];
c[0] = 1;
Fun work
var arr = [];
arr[10]= 'hi';
console.log(arr.length); // 11
Методы массивов
- Добавление/удаление
- pop/push (конец)
- shift/unshift (начало)
- Преобразование из строки в массив
- split
- join
- slice
- splice
- sort